ksh 错误从列表中删除

ksh error remove from list

我正在尝试从 korn shell 中的列表中删除某个元素。它在我的 linux 机器上工作,但完全相同的代码在 solaris11 机器上给我一个错误。我需要一个适用于两者的代码。这可能是因为不同的 ksh 版本,但我想找到一个适用于两者的解决方案。

密码是:

#!/bin/ksh
MY_LIST="HELLO HOW ARE YOU"
toDel="HOW"
MY_LIST=( "${MY_LIST[@]/$toDel}" )
echo "MY LIST AFTER REMOVING HOW IS $MY_LIST"

在 Solaris 上,我收到以下错误: 第 4 行的语法错误:'(' unexpected

有什么建议吗?

您可能需要花一些时间在 ksh88 man page 上。

无需进一步说明:

set -A my_list HELLO HOW ARE YOU    # note, separate words
toDel=HOW
set --                              # using positional parameters as "temp array"
for word in "${my_list[@]}"; do 
    [[ $word != $toDel ]] && set -- "$@" "$word"
done
set -A my_list "$@"
printf "%s\n" "${my_list[@]}"
HELLO
ARE
YOU

最后,我用了'Walter A'解决方案:

MY_LIST=`echo $MY_LIST | sed "s/$toDel//"`

Melodie 写道: 最后,我使用了 'Walter A' 解决方案

很高兴我能帮上忙。 使您能够投票给我并关闭问题,我 post 我的评论作为答案。

MY_LIST=`echo $MY_LIST | sed "s/$toDel//"`