我使用awk-split来分割字符串并将其存储到数组中。
我无法在脚本中使用该数组。它显示空数组。
echo $pre_session_cmds | awk '{split($0,cmd_array,"};")} END {for(n in cmd_array){ print cmd_array[n] }}'
for element in "${cmd_array[@]}"
do
echo "command is $element"
done
问题: 正确打印awk打印元素但访问for循环显示数组为空
答案 0 :(得分:0)
只需在awk中打印:
echo $pre_session_cmds | awk '{ split($0,cmd_array,"};") }
END { for(n in cmd_array)
print "command is " cmd_array[n] }'
答案 1 :(得分:0)
使用bash
解决方案:
cmd_array=($(echo $pre_session_cmds |sed -e "s/};/ /g"))
或者只是
for element in $(echo ${pre_session_cmds}|sed -e "s/};/ /g");do
echo $element
done
答案 2 :(得分:0)
你在awk中创建的数组只属于awk。 当你走出awk时它不存在。 而是这样做:
declare -a arr
arr=( $(your code here) )
echo ${arr[0]}
echo ${arr[*]}
所以它会变成:
declare -a arr
arr=( $(echo $pre_session_cmds | awk '{split($0,cmd_array,"};")} END {for(n in cmd_array){ print cmd_array[n] }}') )
echo ${arr[0]}
echo ${arr[*]}
我还没有测试过它。