4

bash の if コンストラクト/演算子または文字列比較に関する基本的なものが欠けています。次のスクリプトを検討してください。

#!/bin/bash
baseSystem="testdir1"
testme="NA"
if [ "$baseSystem"=="$testme" ]; then
    echo "In error case"
fi
if [ "$baseSystem"!="$testme" ]; then
    echo "In error case"
fi

私は得る:

In error case
In error case

そのため、相互に排他的である必要がありますが、それぞれのケースに入ります。どんな助けでも大歓迎です。

4

1 に答える 1

8

bashたまたまスペースにややこだわっています。

演算子の前後にスペースを追加します。

if [ "$baseSystem" == "$testme" ]; then

...

if [ "$baseSystem" != "$testme" ]; then

以下は同等ではありません。

[ "$a"="$b" ]
[ "$a" = "$b" ]

if [ "testdir1==NA" ]; thenあなたの最初のテストは本質的に、どちらが常に真であるかを言うことと同じです。

于 2013-06-14T07:24:04.300 に答える