GNU/Linux >> Linux の 問題 >  >> Linux

$(stuff)と `stuff`の違いは何ですか?

コマンド置換には、ドル括弧とバッククォートの2つの構文があります。
top -p $(pidof init)を実行します。 およびtop -p `pidof init` 同じ出力が得られます。これらの2つの方法は同じことですか、それとも違いがありますか?

承認された回答:

古いスタイルのバッククォート` ` バックスラッシュとネストの扱いは少し異なります。新しいスタイルの$() ( )の間のすべてを解釈します コマンドとして。

echo $(uname | $(echo cat))
Linux

echo `uname | `echo cat``
bash: command substitution: line 2: syntax error: unexpected end of file
echo cat

ネストされたバッククォートがエスケープされている場合に機能します:

echo `uname | `echo cat``
Linux

バックスラッシュの楽しみ:

echo $(echo '\')
\

echo `echo '\'`

新しいスタイルの$() すべてのPOSIX準拠のシェルに適用されます。
mouvicielが指摘したように、古いスタイルの` ` 古いシェルには必要な場合があります。

技術的な観点とは別に、古いスタイルの` ` 視覚的な欠点もあります:

  • 気づきにくい:I like $(program) better than `program`
  • 一重引用符と簡単に混同されます:'`'`''`''`'`''`'
  • 入力はそれほど簡単ではありません(キーボードの標準レイアウトでもそうではないかもしれません)

(およびSEは` `を使用します 自分の目的のために、この答えを書くのは苦痛でした🙂


Linux
  1. Sudo Su –とSudo Su —の違いは何ですか?

  2. GettyとAgettyの違いは?

  3. .exrcと.vimrcの違いは?

  1. 通常のユーザーとシステムユーザーの違いは何ですか?

  2. ‘$の違い。 Foo」と「$./foo」??

  3. 「env」と「printenv」の違いは?

  1. 〜/ .profileと〜/ .bash_profileの違いは?

  2. AwkのPrintとPrintfの違いは何ですか?

  3. Ddrescue、Gddrescue、Dd_rescueの違いは何ですか?