-1

次のようなコマンドを実行することの違いは何ですか:

var=$(ls -alh /dir)

そして、次のようにします:

var=`ls -alh /dir`

ある方法は、他の方法よりも多くのインタープリターで使用できますか?

4

1 に答える 1

2

彼らは両方ですcommand substitution

セクション 3.5.4 http://www.gnu.org/software/bash/manual/bashref.html

Bash は、コマンドを実行し、コマンド置換をコマンドの標準出力に置き換え、末尾の改行を削除して展開を実行します。埋め込まれた改行は削除されませんが、単語分割中に削除される場合があります。コマンド置換 $(cat file) は、同等で高速な $(< file) に置き換えることができます。

古いスタイルの逆引用符形式の置換が使用される場合、バックスラッシュは、'$'、'`'、または '\' が続く場合を除いて、その文字どおりの意味を保持します。バックスラッシュが前にない最初の逆引用符は、コマンド置換を終了します。$(command) 形式を使用する場合、括弧内のすべての文字がコマンドを構成します。特別に扱われることはありません。

コマンド置換は入れ子にすることができます。逆引用符で囲まれた形式を使用するときにネストするには、内側の逆引用符をバックスラッシュでエスケープします。

置換が二重引用符で囲まれている場合、単語の分割とファイル名の展開は結果に対して実行されません。

于 2013-05-24T12:46:24.120 に答える