如何从空间分隔数据流中将值提取到单独的变量中

时间:2017-11-01 14:15:05

标签: bash unix getopts

从命令行读取后,我需要将输入分成不同的值。我正在使用 OPTARGS 方法和while循环来阅读它。 所以我的输入将像“hostanme1 hostname2 hostnamen”

如何通过此循环来提取单独变量中的主机名。

    while getopts S:H: opt
do
   case ${opt} in
      S)
        SCHNAME=${OPTARG}
      ;;
      H)
        HOST=${OPTARG}
      ;;
      *)
        DisplayUsage
        exit 1
      ;;
   esac
done

这将像./filename.ksh -S schema -H "Host1 host2 host3 host4

一样运行

1 个答案:

答案 0 :(得分:2)

关键是在一个字符串周围加上'('和')',在项目之间加上空格来构成一个对象数组。

  H)
    HOSTS=(${OPTARG})
  ;;

for host in "${HOSTS[@]}"
do
  echo "$host"
done