2

以下:

#!/bin/sh

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

私が期待するものを出力します({ab、cd})しかし:

#!/bin/ksh

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

コンマをスペースに変換します。どうしてこれなの?また、「\」でコンマをエスケープできないようです。

4

1 に答える 1

4

$FOXが評価されると、ブレース展開が行われます。

ksh の man ページから:

フォームの場合{*,*}:

{ と , と , と , と , と } の間の文字列ごとにフィールドが作成されます。

そのため、シェルはカンマ区切りのリストを取得して展開し、たとえば for ループで使用できるようにします。

コメントでシェルターが示唆しているように、これ"$FOX"は評価されるたびに二重引用符で囲むことで修正できます。

于 2012-05-30T14:39:29.243 に答える