我有一个运行几个命令的“简单”脚本,通常我只想看到几个回显,让我知道它正在执行到哪里。但偶尔我需要一个详细的输出,向我显示正在执行的一些命令的输出。
正常使用示例
echo "Simple message"
wget 'http://example.com' > /dev/null
详细选项
echo "Simple message"
wget 'http://example.com'
我想到用变量来存储输出重定向
output=""
if [ -z "$1" ]
then
output="> /dev/null"
fi
echo "Simple message"
wget 'http://example.com' $output
问题是它似乎不起作用,所以我将 -x 添加到 shebang 中,输出显示
wget 'http://example.com' '>' /dev/null
我怎样才能阻止>
被单引号?
原始脚本中除了简单的 wget 之外还有更多内容,这只是一个简短的示例。
答案1
将 wget 重定向到 stdout 允许您将脚本更改为如下所示:
#!/bin/bash
output="/dev/stdout"
if [ -z "$1" ]; then
output="/dev/null"
fi
echo "simple message"
wget -qO- 'http://example.com' > "$output"
这样,每当您的第一个参数为空时,它将始终重定向到 /dev/null,否则输出到 stdout。
如果您不想将其输出到标准输出,我建议创建一个文件(它将始终相同),然后在 wget 之后从中读取它。