shift命令来自英文单词“移动”,其功能是用于向左移动参数。Linux命令能够一次性接收多个参数,可能是0个,也可能是5个,又或是15个,那么该如何逐一处理这些参数呢?

shift能够将命令接收到的参数逐个向左移动一位,即原本的$3变量会覆盖$2变量,原本的$2变量会覆盖$1变量,这样我们只需要每执行一次shift命令后调用$1变量,就能够实现对全部参数的处理工作了。

语法格式:shift [参数]

常用参数:

数字向左移动的个数

参考实例

编写一个脚本,逐一输出在执行shift命令后的$1变量值,直至清空全部参数:

[root@linux-arae-cc ~]# cat File.sh 
#!/bin/bash
while [ $# != 0 ] ; do
    echo "$1"
    shift
done
[root@linux-arae-cc ~]# ./File.sh AA BB CC DD
AA
BB
CC
DD

将参数向左移动2位:

[root@linux-arae-cc ~]# cat File.sh
#!/bin/bash
while [ $# != 0 ] ; do
    echo "$1"
    shift 2
done
[root@linux-arae-cc ~]# ./File.sh AA BB CC DD
AA
CC