我正在尝试从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
有什么建议吗?
答案 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//"`