shell默认多个传参值是以空格为分隔符的
$ cat show_var.sh
for i in $@
do
echo $i
done
#在shell中$*和$@都是内置变量,表示整个参数列表
$ sh show_var.sh apple banana cherry
apple
banana
cherry
如果传参是个字符串,并且能够以特定字符进行分割,则需要用到shell的另一个内置变量$IFS
注:IFS(Internal Field Seprator),内部域分隔符,是shell的内置变量,当shell处理替换命令时,会根据IFS的值(默认是space/tab/newline)来进行变量分割
$ cat split_var.sh
#备份旧的分隔符变量
OLD_IFS="$IFS"
#设置要使用的分隔符
IFS=","
#按设定的分隔符拆分字符串为数组
arr=($1)
#恢复原分隔符变量值
IFS="$OLD_IFS"
for i in ${arr[@]}
do
echo $i
done
$ sh split_var.sh apple,banana,cherry
apple
banana
cherry
注:shell中变量赋值最好加双引号,表示如果内容中含有变量、命令、转义符等会先解析再输出
注:shell中读取数组元素使用${array_name[index]}