shift命令使位置变量下移一位(即$2代替$1,$3代替$2),并且使$#变量递减,当最后一个参数也显示给用户后,$#就会等于0,同时$*也等于空
vim shift.sh
#!/bin/bash
while [ $# -ne 0 ]
do
echo $1
shift
done
chmod +x shift.sh
sh -x ./shift.sh 1 2 3
+ '[' 3 -ne 0 ']'
+ echo 1
1
+ shift
+ '[' 2 -ne 0 ']'
+ echo 2
2
+ shift
+ '[' 1 -ne 0 ']'
+ echo 3
3
+ shift
+ '[' 0 -ne 0 ']'
========================
vim user_passwd.txt
uu01 123
uu02 456
uu03 789
uu04 012
uu05 345
每次给脚本传递两个变量,然后再把变量迁移掉
vim while_useradd_shift.sh
#!/bin/bash
while [ $# -ne 0 ]
do
useradd $1
echo $2 | passwd --stdin $1
shift 2
done
./while_useradd_shift.sh `cat user_passwd.txt`