shell shift用法

shift是Unix中非常有用的命令。可以使命令参数左移,从而使脚本程序中命令参数位置不变的情况下依次遍历所有参数。
如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令相当于shift 1。

示例:shift_test.sh

#!/bin/sh

if [ $# -eq 0 ]
then
    echo "Usage: $0 arg1 arg2..."
    exit 1
fi

until [ $# -eq 0 ]
do
    echo "$*"
    echo "first arg $1; Total $#"
    shift
done

执行结果: $
> ./shift_test.sh 1 2 3 4 5 1 2 3 4 5 first arg 1; Total 5 2 3 4 5 first arg 2; Total 4 3 4 5 first arg 3; Total 3 4 5 first arg 4; Total 2 5 first arg 5; Total 1

Shift 命令还有另外一个重要用途, Bsh 定义了9个位置变量,从 $1 到 $9,这并不意味着用户在命令行只能使用9个参数,借助 shift 命令可以访问多于9个的参数。
Shift 命令一次移动参数的个数由其所带的参数指定。例如当 shell 程序处理完前九个命令行参数后,可以使用 shift 9 命令把 $10 移到 $1。

原文地址:https://www.cnblogs.com/uriel/p/4241166.html