【发布时间】:2023-03-19 09:04:01
【问题描述】:
我正在尝试从 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
有什么建议吗?
【问题讨论】:
-
我打赌你在两台机器上有不同版本的 ksh
-
是的,我在几分钟前编辑了我的帖子,这就是问题所在(非常肯定)。但我不知道是否有另一种方法可以删除它,这对双方都有效
-
你能用
sed -e 's/'${toDel}'//'这样的东西吗? -
好问题!我还是 bash/ksh 脚本的新手。我会看看 sed 是如何工作的,谢谢
-
我发现使用 ksh/bash 数组非常烦人。如果您熟悉其他具有数组数据类型的语言,您可能需要考虑:例如:
perl -e '@arr = qw( HELLO HOW ARE YOU ); $del = "HOW"; @arr = grep {$_ ne $del} @arr; print "@arr\n"'