我使用参数-A AA/BB
运行脚本。要获得AA和BB阵列,我可以这样做。
INPUT_PARAM=(${AIRLINE_OPTION//-A / }) #get rid of the '-A ' in the begining
LIST=(${AIRLINES_PARAM//\// }) # split by '/'
我们能否在一条线上实现这一目标?
提前致谢。
答案 0 :(得分:4)
单程
IFS=/ read -r -a LIST <<< "${AIRLINE_OPTION//-A /}"
这会将参数替换${AIRLINE_OPTION//-A /}
的输出放入“here-string”,并使用内置的bash read
将其解析为数组。通过为/
命令设置IFS
到/
的值,可以实现read
拆分。
答案 1 :(得分:2)
例如,使用awk
,您可以创建一个数组并将其存储在LIST
变量中:
$ LIST=($(awk -F"[\/ ]" '{print $2,$3}' <<< "-A AA/BB"))
结果:
$ echo ${LIST[0]}
AA
$ echo ${LIST[1]}
BB
-F"[\/ ]"
定义了两个可能的字段分隔符:空格或斜杠/
。'{print $2$3}'
根据这些分隔符打印第2和第3个字段。答案 2 :(得分:2)
LIST=( $(IFS=/; for x in ${AIRLINE_OPTION#-A }; do printf "$x "; done) )
这是一个可移植的解决方案,但如果您的read
支持-a
并且您不介意可移植性,那么您应该选择@ 1_CR的解决方案。