今天做数据迁移时遇到了需要在bash中传入可变参数的场景,之前遇到类似问题是通过确认传入参数数量后使用循环去操作,今天查阅相关资料后发现可以通过while + shift去较为优雅地操作。
我们来看一个例子
#!/bin/bash
var1=$1
while [ $# -gt 0 ];
do
echo "var 1 is $1"
shift
done
echo "var1 is $var1"
测试结果:
./shift_test aaa bbb ccc
var 1 is aaa
var 1 is bbb
var 1 is ccc
var1 is aaa
总结:
- shift会对输入的参数做移动操作
- 使用while+shift可以对可变数量的参数做相关处理