Bash追加到数组元素的末尾
我有一个命令,当我运行它时,它输出一个表,看起来像;Bash追加到数组元素的末尾
Id Name File OS Version Annotation
10 MICKEY [MICKEY_01_001] MICKEY/MICKEY.vmx windows8Server64Guest vmx-08
13 DONALD [DONALD_01_001] DONALD/DONALD.vmx windows7Server64Guest vmx-10
2 GOOFY [GOOFY_01_001] GOOFY/GOOFY.vmx windows9Server64Guest vmx-09
我那么表存储在数组中调用表并列出表数组,代码如下所示;
readarray -t TABLE <<< "$(command)"
IFS='|'
for i in "${TABLE[@]}"
do
echo $I
done
如何附加到每个数组元素的末尾?我想要表格如下所示;
Id Name File OS Version Annotation
10 MICKEY [MICKEY_01_001] MICKEY/MICKEY.vmx windows8Server64Guest vmx-08 ON
13 DONALD [DONALD_01_001] DONALD/DONALD.vmx windows7Server64Guest vmx-10. OFF
2 GOOFY [GOOFY_01_001] GOOFY/GOOFY.vmx windows9Server64Guest vmx-09. ON
如果要追加开启或关闭您的阵列
readarray -t TABLE <<< "$(command)"
#IFS='|' why ?
for ((i=1;i<"${#TABLE[@]}";i++))
# start i=1 to preserve header
do
# condition to ON or OFF
[ "${a:=OFF}" = 'ON' ] &&a='OFF'||a='ON'
TABLE["$i"]="${TABLE["$i"]} $a"
done
for i in "${TABLE[@]}"
do
echo "$i"
done
谢谢你的建议。你的建议没有像我希望的那样工作,它在数组元素的开头追加了ON或OFF,并覆盖了ID字段。我试图在数组元素字符串的末尾附加ON或OFF。任何建议,我可以做到这一点? – user3289583
我不明白。在家中,我用“$(cat infile)”替换“$(command)”,ON和OFF在每个数组元素的末尾处出现,并且不覆盖ID字段。 –
感谢您的帮助和建议,我认为这一定是我的环境。你的解决方案是最符合我的要求的。再次感谢。 – user3289583
指令"$(command)"
做什么?我们应该假设,输出的一行=一个字符串=数组的一个元素?如果是这样,那么这应该为你工作:
readarray -t TABLE <<< "$(command)"
IFS='|'
for i in "${TABLE[@]}"
do
if <condition_for_on_met>; then
echo "$i ON"
elif <condition_for_off_met>;then
echo "$i OFF"
else
echo "$i"
fi
done
但是,这是一个普遍的答案。您可以通过向我们展示您的输入是什么以及它在打印之前如何处理来改善您的问题。
中,我相信有,你可以检查一些存在的问题。例如:https://stackoverflow.com/questions/12744031/how-to-change-values-of-bash-array-elements-without-loop – dbalakirev
ON,OFF,ON从哪里来? –