0
我不知道为什么这个命令:错误命令的输出assingning给一个变量在bash(Linux)的
FILE=`file /usr/bin/java | tr -d \`\' | awk '{print $5}'`
结果此错误消息:
bash: command substitution: line 1: unexpected EOF while looking for matching ``'
bash: command substitution: line 2: syntax error: unexpected end of file
如果我运行先前的命令没有它赋值给一个变量,它按预期工作:
$ file /usr/bin/java | tr -d \`\' | awk '{print $5}'
/etc/alternatives/java
有谁知道为什么会这样,我怎么能全成y将输出值分配给一个变量?我试图从符号链接中找到指向二进制文件的指向路径,所以我可以找出它是32位还是64位文件(以通用的方式,不使用类似java -version
)
注2:我试着sed
代替tr
去掉引号,但它返回相同的错误
非常感谢你提前,问候...
Nacho
不是back-ticks是原始代码的问题,但它们内部没有转义。包含在反标记中的命令行包含两个反斜杠,它们需要转义,但它们不是。 – axiac
非常感谢Avinash Raj!这解决了我的问题 – NachoGomez
@axiac你是对的,逃避它就像这样工作很好'FILE = \'file/usr/bin/java | tr -d \\''\'| awk'{print $ 5}'\'' – NachoGomez