命令替换:反引号或美元符号/括号括起来?

在bash中执行命令替换的首选方法是什么?


我一直这样做:


echo "Hello, `whoami`."

但是最近,我经常看到它是这样写的:


echo "Hello, $(whoami)."

首选语法是什么,为什么?还是它们几乎可以互换?


我倾向于第一个,只是因为我的文本编辑器似乎知道它是什么,并且适当地突出显示了语法。


我在这里读到,转义字符在每种情况下的行为都有些不同,但是我不清楚哪种行为更可取,还是仅取决于情况。


附带问题:在一个脚本中同时使用两种形式是否是不好的做法,例如在嵌套命令替换时?


慕的地10843
浏览 577回答 3
3回答

慕田峪7331174

您可以阅读bash手册中的区别。在大多数情况下,它们是可互换的。值得一提的是,您应该转而backquote使用嵌套命令:$ echo $(echo hello $(echo word))hello word    $ echo `echo hello \`echo word\``hello word

吃鸡游戏

反引号与古老的shell兼容,因此需要可移植的脚本(例如GNU autoconf代码段)应优先使用它们。这种$()形式在眼睛上更容易一点,尤其是。经过几级转义。
打开App,查看更多内容
随时随地看视频慕课网APP