我的 shell 脚本中有一个变量在运行时无法正确解析:
输入
#!/bin/sh
SERVER_ERL_ARGS="+K true +A30 +P 1048576 \
-kernel inet_default_connect_options [{nodelay,true}]"
echo ${SERVER_ERL_ARGS}
输出:
+K true +A30 +P 1048576 -kernel inet_default_connect_options a
这种行为背后的任何原因以及我该如何纠正它。
答案1
您尚未在 中引用变量扩展,并且在当前目录中echo
有一个名为的文件。a
的作用[{nodelay,true}]
类似于文件名通配模式,它将匹配名称为 内任何单个字符的任何文件。 在您的情况下,它匹配当前目录中[...]
调用的文件的名称。a
因此,引用该变量,但最好使用printf
:
printf '%s\n' "$SERVER_ERL_ARGS"
另请注意,在所有情况下${variable}
都完全等同于 ,$variable
除非扩展是字符串的一部分,其中紧随其后的字符在变量名中有效,例如"${variable}x"
。
也可以看看: