GNU/Linux >> Linux の 問題 >  >> Linux

Bash/sh 'if else' ステートメント

変数が設定されているかどうかを判断したい場合は、おそらく if/else またはテスト ([) を使用したくないことに注意してください。次のようなことを行うのがより一般的です:

# Abort if JAVA_HOME is not set (or empty)
: ${JAVA_HOME:?JAVA_HOME is unset}

または

# report the value of JAVA_HOME, or a default value
echo ${JAVA_HOME:-default value}

または

# Assign JAVA_HOME if it is unset (or empty)
: ${JAVAHOME:=default value}

if [ -z $JAVA_HOME  ]  
then  
    echo $JAVA_HOME  
else  
    echo "NO JAVA HOME SET"  
fi

あなたは方法 sh の愚かな制限に遭遇しています 引数を展開します。スクリプトの 3 行目は次のように展開されています:

if [ != ]

どの sh 何をすべきかわかりません。この厄介なサイズのハックを試してください:

if [ x$JAVA_HOME != x ]

両方の引数は空でない必要があるため、x をスローします。 両方に入って、何が起こるか見てください。

または、文字列が空でないかどうかをテストする別の演算子があります:

if [ !-z $JAVA_HOME ]

(-z 次の文字列が空かどうかをテストします。)


-n および -z オプションは、ここで使用する必要があるテストです:

if [ -n "$JAVAHOME" ]; then
    echo "$JAVAHOME";
else
    echo "\$JAVAHOME not set";
fi

Linux
  1. バンをエコーする方法!?

  2. 例を含む Bash If-Else ステートメント

  3. 4 Awk If ステートメントの例 ( if, if else, if else if, :? )

  1. 5 Bash Case ステートメントの例

  2. bashにgotoステートメントはありますか?

  3. Bashでの$#の使用は何ですか

  1. Bashスクリプトでifelse条件文を使用する方法

  2. Bashでのケースステートメントの使用

  3. 4 Bash If ステートメントの例 ( If then fi, If then else fi, If elif else fi, Nested if )