4

我用 param 运行一个脚本-A AA/BB。要获得具有 AA 和 BB 的数组,我可以这样做。

INPUT_PARAM=(${AIRLINE_OPTION//-A / }) #get rid of the '-A ' in the begining
LIST=(${AIRLINES_PARAM//\// })         # split by '/'

我们可以在一行中实现这一点吗?

提前致谢。

4

3 回答 3

4

单程

IFS=/ read -r -a LIST <<< "${AIRLINE_OPTION//-A /}"

这会将参数替换的输出${AIRLINE_OPTION//-A /}放入“here-string”中,并使用read内置的 bash 将其解析为数组。通过为命令设置to/的值来实现拆分。IFS/read

于 2013-09-27T13:47:06.440 回答
2
LIST=( $(IFS=/; for x in ${AIRLINE_OPTION#-A }; do printf "$x "; done) )

这是一个可移植的解决方案,但如果您read支持-a并且您不介意可移植性,那么您应该选择@1_CR 的解决方案。

于 2013-09-27T14:06:51.293 回答
2

awk例如,您可以创建一个数组并将其存储在变量LIST中:

$ LIST=($(awk -F"[\/ ]" '{print $2,$3}' <<< "-A AA/BB"))

结果:

$ echo ${LIST[0]}
AA
$ echo ${LIST[1]}
BB

解释

  • -F"[\/ ]"定义两个可能的字段分隔符:空格或斜杠/
  • '{print $2$3}'根据这些分隔符打印第二个和第三个字段。
于 2013-09-27T13:46:08.930 回答