有没有办法通过变量重定向stdout和stderr,例如在脚本中添加命令选项?
例如,我有一个脚本:
#!/bin/bash -x
TEST=">/dev/null 2>&1"
OPT='-p -v'
mkdir $OPT 123/123/123 $TEST
我可以看到OPT被替换为-p
没有任何问题,bash将其解释为选项。但是重定向解释为目录名称。
$ ./test.sh
+ TEST='>/dev/null 2>&1'
+ OPT='-p -v'
+ mkdir -p -v 123/123/123 '>/dev/null' '2>&1'
mkdir: created directory `123/123'
mkdir: created directory `123/123/123'
mkdir: created directory `>/dev'
mkdir: created directory `>/dev/null'
mkdir: created directory `2>&1'
有什么办法可以说bash,$ VAR是重定向的,而不是dirs的名字。
PS。可能是我走错了路,但我想从脚本中生成可选的详细或非详细输出。但是,即使在非详细模式下,我也需要一些输出,因此,我不能仅从脚本中的某些命令重定向整个stdout和stderr。