Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
以下:
#!/bin/sh FOX="{ab,cd}" echo $FOX
输出我所期望的 ({ab,cd}) 但是:
#!/bin/ksh FOX="{ab,cd}" echo $FOX
把逗号变成空格。为什么是这样?我似乎也无法用“\”转义逗号。
$FOX评估时,您将获得大括号扩展。
$FOX
从 ksh 手册页:
对于表格{*,*}:
{*,*}
为 { 和 ,, between , and , 和 between , and } 之间的每个字符串创建一个字段。
因此,shell 正在获取您的逗号分隔列表并对其进行扩展,以便可以在例如 for 循环中使用它。
正如 shellter 在评论中所建议的那样,这可以通过"$FOX"在评估时双引号来解决。
"$FOX"