【发布时间】:2014-10-27 09:47:50
【问题描述】:
我正在尝试提出一种方式脚本来在 bash 中传递 silent 标志,以便所有输出都将被定向到 /dev/null(如果存在)和屏幕(如果存在)不是。
我的脚本的 MWE 是:
#!/bin/bash
# Check if silent flag is on.
if [ $2 = "-s" ]; then
echo "Silent mode."
# Non-working line.
out_var = "to screen"
else
echo $1
# Non-working line.
out_var = "/dev/null"
fi
command1 > out_var
command2 > out_var
echo "End."
我用两个变量调用脚本,第一个无关紧要,第二个 ($2) 是实际的静默标志 (-s):
./myscript.sh first_variable -s
显然out_var 行不起作用,但它们给出了我想要的想法:一种将command1 和command2 的输出定向到屏幕或/dev/null 的方法,具体取决于@ 987654331@ 是否在场。
我该怎么做?
【问题讨论】:
-
shell 分配中
=周围没有空格。话虽如此,假设您想要默认的标准输出位置,如果您将"to screen"替换为/dev/stdout并在重定向中使用$out_var,我相信您的脚本应该可以正常工作。 -
伟大的提示@EtanReisner!