sha*_*r v 4 shell echo variable
我的 shell 脚本中有一个变量在运行时没有得到正确解析:
输入
#!/bin/sh
SERVER_ERL_ARGS="+K true +A30 +P 1048576 \
-kernel inet_default_connect_options [{nodelay,true}]"
echo ${SERVER_ERL_ARGS}
Run Code Online (Sandbox Code Playgroud)
输出:
+K true +A30 +P 1048576 -kernel inet_default_connect_options a
Run Code Online (Sandbox Code Playgroud)
这种行为背后的任何原因以及我如何纠正它。
Kus*_*nda 15
您没有在您的 中引用变量扩展echo
,并且您a
在当前目录中调用了一个文件。
该[{nodelay,true}]
就像一个文件匹配模式,将匹配其名称是内任何单个字符的任何文件[...]
。在您的情况下,它与a
当前目录中调用的文件的名称相匹配。
所以,引用变量,但最好使用printf
:
printf '%s\n' "$SERVER_ERL_ARGS"
Run Code Online (Sandbox Code Playgroud)
另请注意,在所有情况下${variable}
都完全等效,$variable
除非扩展是字符串的一部分,其中紧随其后的字符在变量名称中有效,例如 in "${variable}x"
。
也可以看看: