# Linux的shift命令

# 命令功能

bash shellshift命令能够用来操作命令行参数。

在使用 shift 命令时,默认情况下它会将每个参数变量向左移动一个位置。所以,变量 $3
的值会移到 $2 中,变量 $2 的值会移到 $1 中,而变量 $1 的值则会被删除,值得注意的是变量 $0 的值,也就是程序名,不会改变。

在不知道到底有多少参数时,这是遍历命令行参数的另一个好方法。

使用 shift 命令的时候要小心。如果某个参数被移出,它的值就被丢弃了,无法再恢复。

# 实例

# !/bin/bash

echo cnt=1

while [ -n "$1" ]
do
    echo "Parameter #$cnt = $1"
    count=$[ $count + 1 ]
    shift
done

# ./test 1 2 3 4 5
# Parameter # = 1
# Parameter # = 2
# Parameter # = 3
# Parameter # = 4
# Parameter # = 5

# 补充

shift命令还支持-n参数,来控制向左移动的步数。

如上面的例子改写后为:

# !/bin/bash

echo cnt=1

while [ -n "$1" ]
do
    echo "Parameter #$cnt = $1"
    count=$[ $count + 1 ]
    shift 2
done
# ./test.sh 1 2 3 4
# Parameter # = 1
# Parameter # = 3
(adsbygoogle = window.adsbygoogle || []).push({});