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

このように、条件は、リダイレクトを実行するたびではなく、最初に1回だけテストされます。

于 2013-03-15T12:20:48.233 に答える