以下内容:
#!/bin/sh
FOX="{ab,cd}"
echo $FOX
输出我期望的结果({ab,cd})但是:
#!/bin/ksh
FOX="{ab,cd}"
echo $FOX
将逗号变成空格。为什么是这样?我也似乎无法用'\'来逃避逗号。
答案 0 :(得分:4)
评估$FOX
时,你的大括号扩展。
来自ksh手册页:
表单{*,*}
:
为{和,,之间,和之间以及}之间的每个字符串创建一个字段。
所以shell正在以逗号分隔列表并对其进行扩展,以便可以在for循环中使用它。
正如shellter在评论中所建议的那样,只要对其进行评估,就可以通过双引"$FOX"
来解决这个问题。