2

以下:

#!/bin/sh

FOX="{ab,cd}"
echo $FOX

输出我所期望的 ({ab,cd}) 但是:

#!/bin/ksh

FOX="{ab,cd}"
echo $FOX

把逗号变成空格。为什么是这样?我似乎也无法用“\”转义逗号。

4

1 回答 1

4

$FOX评估时,您将获得大括号扩展。

从 ksh 手册页:

对于表格{*,*}

为 { 和 ,, between , and , 和 between , and } 之间的每个字符串创建一个字段。

因此,shell 正在获取您的逗号分隔列表并对其进行扩展,以便可以在例如 for 循环中使用它。

正如 shellter 在评论中所建议的那样,这可以通过"$FOX"在评估时双引号来解决。

于 2012-05-30T14:39:29.243 回答