コマンド代替構文には、ドル角かっことバックティックを使用する2つの構文があります。実行しtop -p $(pidof init)
、top -p `pidof init`
同じ出力を提供します。これら2つの方法は同じことをしますか、それとも違いがありますか?
ベストアンサー1
以前のスタイルのバックティックは、` `
バックスラッシュとネストを少し異なる方法で処理します。新しいスタイルは$()
その間のすべてを( )
コマンドとして解釈します。
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- 一貫したシェル。
〜のように映画で古いシェルにはレガシーが` `
必要な場合があります。
技術的な観点に加えて、以前のスタイルには` `
視覚的な欠点もあります。
- 目立つのは難しいです。
I like $(program) better than `program`
- 一重引用符と混同しやすいです。
'`'`''`''`'`''`'
- 入力するのは非常に簡単ではありません(おそらくキーボードの標準レイアウトでも発生しません)
(SE` `
自体の目的のために、この答えを書くのは痛かったです。)