2011-12-18 22 views

答えて

9

同じ効果が得られます。

$()は、読みやすく、$()を別のものにネストするのが簡単なのでお勧めします$()

更新:

$()構文は、POSIX 1003.1標準(2004年版)です。しかし、一部の古いUNIXシステム(SunOS、HP-UXなど)では、/bin/shがそれを理解していません。

そのような環境でスクリプトを実行する必要がある場合は、代わりにバッククォート「 `」を使用するか、別のシェル(通常はksh)を使用する必要があります。

使用する構文がわからない場合は、$()を使用してください。バックティック構文は推奨されていません。

+0

@samus:$()は実際にはPOSIX(1003.2)ですが、古いUNIXでは動作しません。私を信頼してください - 私は毎日使っています。 –

+0

しかし、それはポイントです。移植性について言えば、POSIXは、ほとんどのプラットフォームでサポートされている現在の標準であるため、特別な要件がある場合は特にそうです。 –

+0

@samus: "より移植性のある"とは、 "新しいPOSIX標準と互換性がある"ではなく、 "より多くのOSで動作"を意味します。 –

3

変数を初期化していない場合は、変数をデフォルトの値に初期化する別の方法があります。

[jaypal:~/Temp] a="I have initialized var a" 
[jaypal:~/Temp] echo ${a:="Default value"} 
I have initialized var a 
[jaypal:~/Temp] a= 
[jaypal:~/Temp] echo ${a:="Default value"} 
Default value 
+0

オペレータが変数の新しい値を読み取り、古い値を出力するようにします。 :) –

+2

これは、スクリプトに値を '$ 1'、' $ 2'として渡し、明示的に値が渡されていなくてもスクリプトを実行するのに役立ちます。これにより、値が割り当てられていない場合、デフォルト値で実行するように暗黙的に変数を設定できます。これは、変数が割り当てられているかどうかをチェックする約4-5行のコードを節約します。例えば 'if [-z" $ var "]のようになります。 ... –

+0

echo $ {a:= "デフォルト値"} または echo $ {a: - "デフォルト値"} echo $ {a:= "デフォルト値"} – Indrajeet

関連する問題