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