私は、次のコードスニペットの両方がPOSIX準拠したシェルに有効と考えている:POSIXシェルで "test"や "[" "]"を使うべきですか?
オプション1:
if [ "$var" = "dude" ]
then
echo "Dude, your var equals dude."
fi
はオプション2:構文が好ましい
if test "$var" = "dude"
then
echo "Dude, your var equals dude."
fi
とどうして?特定の状況で、他のものを使用する理由はありますか?
はい、どちらも有効です。いいえ、他のものよりも優先する特別な理由はありません - それは文体的な選択です。 –
'test'はおそらくプロセスフォークになり、効率が低下します。 –
@willemVanOnsemは、 'test'が組み込みでないシェル上では、外部の'/usr/bin/[' - それを探します。あなたのオペレーティングシステム*は、外部バイナリ(しばしば '/ usr/bin/test'と同じiノードへのハードリンクで、' argv [0] 'がどのように呼び出されたかを見て、引き数' ''を引数から破棄するかどうかを決定しますリスト)。 –