在我的剧本我有这样一行:
[ -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