在我的劇本我有這樣一行:
[ -z "$(file $1 | grep '256')" ] && echo 256
如果$ 1包含空格,然後我得到錯誤信息
line 11: [: too many arguments
我怎樣才能正確地引用這使得它可以正常運行?
更新:
我錯誤地從腳本中粘貼了該行。該錯誤消息對此行是正確的
[ -z $(file "$1" | grep '256') ] && echo 256
在我的劇本我有這樣一行:
[ -z "$(file $1 | grep '256')" ] && echo 256
如果$ 1包含空格,然後我得到錯誤信息
line 11: [: too many arguments
我怎樣才能正確地引用這使得它可以正常運行?
更新:
我錯誤地從腳本中粘貼了該行。該錯誤消息對此行是正確的
[ -z $(file "$1" | grep '256') ] && echo 256
雙引號的$1
:
[ -z "$(file "$1" | grep '256')" ] && echo 256
PS:您發佈的行不會導致你指的錯誤。無論是從另一個版本複製錯誤,還是腳本中有另一個錯誤引用的行。
在變量周圍使用雙引號。總是。
(當然,並不總是總是如此。有你想要的外殼上的值進行分詞的情況,但這些都是小衆而不是你應該期望很快能明白任何時候)。
然而,你在那裏做什麼可以簡單地被替換爲
file "$1" | grep -o '256'
殼牌報價是一個常見的常見問題;它知之甚少,但並不難。見例如http://mywiki.wooledge.org/Quotes(猛砸特有的,但一般適用於整個家庭伯恩殼)
它的工作原理。但我不明白爲什麼。我認爲,1美元左右的報價將會抵消外部報價。你有鏈接,我可以找到更多關於此? – Rucent88
'$(...)'中的上下文首先被評估,然後處理父shell的引用。 – tripleee
+1爲「錯誤的錯誤信息」診斷! 「 – tripleee