1

複数のIFがnullであるかどうかを判断するための解決策と最善のアプローチの提案を探しています。

私は持っています:

if [ -n "$sfcompname" ]; then
        echo $sfcompname
fi
if [ -n "$sfcompip" ]; then
        echo $sfcompip
fi
if [ -n "$lacompname" ]; then
        echo $lacompname
fi
if [ -n "$lacompip" ]; then
        echo $lacompip
fi

..それはもっとうまくできると確信していますが、現時点での私の主な問題は、次のように言おうとしていることです。

if(すべてのIF)= null

echo "入力した名前を確認して、もう一度やり直してください"

4

3 に答える 3

3

ややばかげていますが、動作するはずです

if ! [[ ${sfcompname}${sfcompip}${lacompname}${lacompip} ]]
then
  echo "Please check the name you entered and try again"
fi
于 2013-03-07T01:08:37.860 に答える
1

このために別の変数を使用して、値に初期化し、ifステートメントのいずれかが起動した場合に変更することができます。そして最後に、それが変更されていない場合、あなたはそれらのどれも発砲しなかったことを知っています。このようなもので十分です:

fired=0

if [ -n "$sfcompname" ]; then
    echo $sfcompname
    fired=1
fi
if [ -n "$sfcompip" ]; then
    echo $sfcompip
    fired=1
fi
if [ -n "$lacompname" ]; then
    echo $lacompname
    fired=1
fi
if [ -n "$lacompip" ]; then
    echo $lacompip
    fired=1
fi

if [[ ${fired} -eq 0 ]] ; then
    echo 'None were fired'
fi
于 2013-03-07T01:07:45.693 に答える
1

もう1つの可能性は、変数チェックのショートカットを使用することです。

name="$sfcompname$sfcompip$lacompname$lacompip"        
${name:?"Please check the name you entered and try again"} 

変数が設定されていない場合、これはプログラムを終了します。このメッセージはオプションであり、標準の「パラメータnullまたは未設定」を上書きします。

于 2013-03-07T09:01:15.820 に答える