14

コマンド置換には2つの異なる構文があります。

FOO=$(echo bar)

FOO=`echo bar`

私の知る限り、最初のメソッドはBashで定義され、2番目のメソッドはで定義されていshます。

shスクリプトでの次のコマンド置換の使用を検討してください。

#!/bin/sh
FOO=$(echo bar)

それはバシズムの定義に該当しますか?

bashism、つまりPOSIXで定義されていない機能(ダッシュまたは一般的な/ bin / shでは機能しません)。

4

2 に答える 2

14

実際には、$(...)コマンド置換構文はPOSIXによって定義されていますが、以前のSVID sh標準の一部ではありません。したがって、POSIX以前のシステムでの実行を気にしない限り、問題はありません。

于 2010-09-24T18:36:10.417 に答える
13

それは同じことです。つまり、それはbashismでも、bashだけに関連するものでもありません。

コマンド置換
コマンド置換を使用すると、コマンド名自体の代わりにコマンドの出力を置換できます。コマンド置換は、コマンドが次のように囲まれている場合に発生します。

$(command)

または(「バッククォートされた」バージョン):

`command`

シェルは、サブシェル環境でコマンドを実行し、コマンド置換をコマンドの標準出力に置き換えて、置換の最後にある1つ以上の改行のシーケンスを削除することにより、コマンド置換を拡張します。(出力の終わりの前に埋め込まれた改行は削除されません。ただし、フィールド分割中に、IFSの値と有効な引用符によっては、スペースに変換される場合があります。)


資力 :

于 2010-09-24T18:36:02.227 に答える