用法解释:
shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本)。
示例1:依次读取输入的参数并打印参数个数:
从上可知 shift(shift 1) 命令每执行一次,变量的个数($#)减一(之前的$1变量被销毁,之后的$2就变成了$1),而变量值提前一位。
同理,shift n后,前n位参数都会被销毁,例如示例2
示例2
运行结果:
示例3:
命令行参数处理
./imx6mksdboot.sh -device /dev/sdd -flash emmc -ddrsize 512
#命令行处理,根据选项获得参数
while [ $# -gt 0 ]; do
case $1 in
--help | -h)
usage $0
;;
-device) shift; device=$1; shift; ;;
-flash) shift; flash=$1; shift; ;;
-ddrsize) shift; ddrsize=$1; shift; ;;
--version) version $0;;
*) copy="$copy $1"; shift; ;;
esac
done
当命令中有 -device时,会使用shift将参数左移,也就是去掉此前的$1,也就是命令中-device,此时的$1就成为了后面的 /dev/sdd,这样就让device变量等于/dev/sdd,一次类推
usage $0是函数调用,将$0也就是脚本的名字掺入usage 函数中,在函数中需要用$1来获取