私が見た限りでは、プロセスの出力で変数を初期化する2つの方法があります。これらの2つの間に違いはありますか?変数を初期化するさまざまな方法
ex1=`echo 'hello world'`
ex2=$(echo 'hello world')
私が見た限りでは、プロセスの出力で変数を初期化する2つの方法があります。これらの2つの間に違いはありますか?変数を初期化するさまざまな方法
ex1=`echo 'hello world'`
ex2=$(echo 'hello world')
同じ効果が得られます。
$()
は、読みやすく、$()
を別のものにネストするのが簡単なのでお勧めします$()
。
更新:
$()
構文は、POSIX 1003.1標準(2004年版)です。しかし、一部の古いUNIXシステム(SunOS、HP-UXなど)では、/bin/sh
がそれを理解していません。
そのような環境でスクリプトを実行する必要がある場合は、代わりにバッククォート「 `」を使用するか、別のシェル(通常はksh)を使用する必要があります。
使用する構文がわからない場合は、$()
を使用してください。バックティック構文は推奨されていません。
はまた、SH上で作業を行いますので、$()
がPOSIXであることがわかり
http://mywiki.wooledge.org/BashFAQ/082を参照してください。
変数を初期化していない場合は、変数をデフォルトの値に初期化する別の方法があります。
[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
オペレータが変数の新しい値を読み取り、古い値を出力するようにします。 :) –
これは、スクリプトに値を '$ 1'、' $ 2'として渡し、明示的に値が渡されていなくてもスクリプトを実行するのに役立ちます。これにより、値が割り当てられていない場合、デフォルト値で実行するように暗黙的に変数を設定できます。これは、変数が割り当てられているかどうかをチェックする約4-5行のコードを節約します。例えば 'if [-z" $ var "]のようになります。 ... –
echo $ {a:= "デフォルト値"} または echo $ {a: - "デフォルト値"} echo $ {a:= "デフォルト値"} – Indrajeet
@samus:$()は実際にはPOSIX(1003.2)ですが、古いUNIXでは動作しません。私を信頼してください - 私は毎日使っています。 –
しかし、それはポイントです。移植性について言えば、POSIXは、ほとんどのプラットフォームでサポートされている現在の標準であるため、特別な要件がある場合は特にそうです。 –
@samus: "より移植性のある"とは、 "新しいPOSIX標準と互換性がある"ではなく、 "より多くのOSで動作"を意味します。 –