Echo 未打印变量的正确值

Echo 未打印变量的正确值

我的 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"

也可以看看:

相关内容