从列表中删除ksh错误

时间:2015-01-07 20:32:18

标签: solaris ksh

我正在尝试从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

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

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

很好,我可以帮忙。 允许您投票给我并关闭问题,我发表评论作为答案。

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

答案 1 :(得分:0)

您可能需要花一些时间使用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

答案 2 :(得分:0)

最后,我使用了'Walter A'溶液:

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