拆分bash命令行参数

Ala*_*air 6 bash string shell-script

这是拆分冒号分隔的 bash 命令行参数的最佳方法吗?

#!/bin/bash
hostlist=`echo $1| awk '{split($0,Ip,":")} END{for (var in Ip) print Ip[var];}'`
for host in $hostlist
 do
  ....
 done
Run Code Online (Sandbox Code Playgroud)

Sha*_*off 8

另一种方法是使用IFS,shell 的内置方法将字符串拆分为字段。

OLDIFS=$IFS
IFS=':'
set -f
for host in $hostlist; do
  set +f
  echo "$host"
done
set +f
IFS=$OLDIFS
Run Code Online (Sandbox Code Playgroud)

set -f关闭文件名生成(通配):没有它,通配符*?\[将在每个单词中扩展。