ksh:用星号替换单词会导致错误的替换错误

ksh: Replacing a word with asterisks causes bad substitution error

我正在尝试用相同长度的星号替换从文件中读取的特定单词。 例如; 猫 -> *** 蛇 -> *****

因此,在我下面的脚本中,它在 bash 中有效,但在 ksh

中无效
for next in `cat $filename`; do
        rep=${next//[^\"]/*}
        echo "$next replace with $rep"
done;

运行 它在 ksh 中给我一个错误的替换错误,有什么想法吗? 谢谢

在旧版本的 ksh 中,您必须使用 sed 命令:

for next in `cat $filename`; do
        rep=$(print $next | sed 's/[^\"]/*/g')
        echo "$next replace with $rep"
done;

您可以使用 tr:

rep=$(printf "%s" "$next" | tr -c '"' '*')