意识到 bash 对双引号、单引号、括号等非常挑剔——我今天遇到了一个奇怪的行为,无法解释。问题本身很容易避免,但我不明白原因。我有兴趣了解为什么会发生这种情况只是为了提高我的 bash 知识。
这是一个简短的示例——文件 test.sh 的内容:
msg="Usage: command password [dbhost] [database] [user] [query] [filetag]"
echo $msg
然后运行:
sh test.sh
我预计输出将是:
Usage: command password [dbhost] [database] [user] [query] [filetag]
然而我得到的是:
Usage: command password [dbhost] [database] [user] y [filetag]
如果我将单词“query”更改为“querx”,则输出的那部分变为“x”。
如果我将“查询”一词更改为“xuery”,则输出的那部分将变为“x y”。
如果我把“query”这个词改成“xuerx”,那部分输出就变成了“x x”。
没有名称为 query、querx 等的本地或环境变量。
这是在 RedHat 上。有任何想法吗?