我必須運行命令,在一個bash腳本中,並且在這個bash腳本中,我必須運行其他命令。我正在運行CentOS。bash for inline命令
我發現2種方法來做到這一點在博客和手冊:使用使用美元符號的蜱或口音焦炭
command `sub command`
或
2)
1)和括號
command $(sub command)
2和哪一個更適合使用?
我必須運行命令,在一個bash腳本中,並且在這個bash腳本中,我必須運行其他命令。我正在運行CentOS。bash for inline命令
我發現2種方法來做到這一點在博客和手冊:使用使用美元符號的蜱或口音焦炭
command `sub command`
或
2)
1)和括號
command $(sub command)
2和哪一個更適合使用?
有沒有區別,除了在 「nestability」:
的$()
是嵌套:
$ echo $(echo "hi" $(echo "there"))
而``是不是。
$(...)
和反引號非常相似。兩者之間的唯一區別是一些特殊字符被替換的細節;該手冊介紹了比我更可以:
當使用替代舊式的反引號的形式,反斜槓其次當$,`,或者只是其字面含義。不帶反斜槓的第一個反引號將終止命令替換。使用$(command)形式時,括號之間的所有字符構成命令;沒有人專門處理。
例如,這使得嵌套$(...)
更容易一些。除此之外,沒有什麼區別。
從http://tldp.org/LDP/abs/html/commandsub.html報價:
希望這有助於!
其他人指出了語法上的區別(基本上,$()
在嵌套和逃逸方面略顯清晰),但沒有人提到我認爲更重要的區別:$()
更容易閱讀。它看起來不像單引號(這意味着完全不同),並且開始和結束分隔符不同,從而更容易在視覺上區分其內容。
對於您自己的腳本,這可能不是非常重要;代碼可讀性很好,但功能更重要。但對於任何編寫教程,示例代碼,stackoverflow答案等的人來說,可讀性要重要得多。人們將鍵入單引號而不是反引號時,鍵入示例等,然後弄糊塗,當它不能按預期工作。
因此,對於每個人在stackoverflow上寫的例子:請保存您的讀者一些麻煩,並始終使用$()
表格。
我必須同意戈登的事實,$()是方式更清潔。我掙扎了2個小時編輯我的.bash_profile來添加自制bash完成只發現我應該使用`而不是'。
從技術上講,它可以嵌套,但它必須在每個級別再次逃脫,並且因此不可維護*和*醜陋*。 – l0b0 2012-03-07 15:41:31