0

私は試験のためのシェルスクリプトを学んでおり、教師の本のある場所で彼は次の例を書いています。

# This script expects a folder path as an argument.
cd $1
if [ $? -ne 0 ]; then echo "Folder not found"; exit 1; fi

しかし別の例では、彼は次のように書いています。

# This script expects one argument
if [ "$#" -ne 1 ]; then echo "Missing Parameter"; exit 1; fi

さて、テストされた引数を二重引用符で囲まれた角括弧内に入れる必要があるのはいつですか?そうでない場合はどうなりますか?

つまり、$?この場合、数値を表します。ただし、この例の$#は、文字列ではなく数値も表します(ただし、すべてが文字列です)。しかし、なぜ$#が二重引用符で囲まれているのですか?いいえ?

4

2 に答える 2

2

Bashは両方が数値であることを保証しているため、違いはありません。

変数が文字列である可能性があり、制御文字またはスペースが含まれている可能性がある場合は、引用符で囲む必要があります。

于 2012-08-17T11:04:25.957 に答える
0

それらは同じことを意味します。$ valuesは変数を表し、引用符の内側と外側の変数として使用されます。

于 2012-08-17T10:57:06.593 に答える