我有一个带有可选详细程度参数的脚本。根据它的值,我想要抑制输出(在下面的例子中推送,但实际上是其他的,主要是git命令)。例如:
verb=1
# pushd optionally outputs path (works but too long)
if [ $verb ]; then
pushd ..
else
pushd .. > /dev/null
fi
popd > /dev/null # the same if.. would be needed here
我正在寻找的是:
push .. $cond # single line, outputing somehow controlled directly
popd $cond # ditto
有人可以帮忙吗?谢谢,
汉斯 - 彼得
答案 0 :(得分:2)
您可以将输出重定向到定义取决于$verb
:
#! /bin/bash
verb=$1
if [[ $verb ]] ; then
verb () {
cat
}
else
verb () {
: # Does nothing.
}
fi
echo A | verb
答案 1 :(得分:1)
使用不同的文件描述符重定向到:
if (( $verb ))
then
exec 3>&1
else
exec 3>/dev/null
fi
push .. >&3
popd >&3
这样,条件只在开始时测试一次,而不是每次重定向时测试。