0

我有一个带有可选详细参数的脚本。根据它的值,我想抑制输出(在下面的示例中是 pushd,但实际上是其他,主要是 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

有人可以帮忙吗?谢谢,

汉斯-彼得

4

2 回答 2

2

您可以将输出重定向到其定义取决于的函数$verb

#! /bin/bash

verb=$1

if [[ $verb ]] ; then
    verb () {
        cat
    }
else
    verb () {
        :     # Does nothing.
    }
fi

echo A | verb
于 2013-03-15T12:13:04.203 回答
1

使用不同的文件描述符重定向到:

if (( $verb ))
then
    exec 3>&1
else
    exec 3>/dev/null
fi

push .. >&3
popd >&3

这样,条件只在开始时测试一次,而不是每次进行重定向时。

于 2013-03-15T12:20:48.233 回答