[内容] Shell 脚本中 shift 的作用 (偏移位置变量的值)

内容一:shift 在 Shell 脚本中的作用

偏移位置变量,默认偏移 1 位,也就是说第 1 个位置变量的值会被第 2 个位置变量的值取代。
如果 shift 后面添加数字,则会直接偏移对应数字个位置。例如 shift 4 则代表直接偏移 4 个位置变量,此时第 1 个位置变量的值会被第 5 个位置变量的值取代。

(注意:shift 不能偏移成负数,且当剩下的位置变量数量不够 shift 偏移时,shift 则不会偏移)

内容二:shift 在 Shell 脚本中的案例

2.1 shift 在 Shell 脚本中的案例 (只偏移 1 位)

2.1.1 创建不偏移的只要还有位置变量就无限循环显示第 1 个位置变量的值的脚本
# vim test.sh

创建以下内容:

#!/bin/bash

while [ $# != 0 ];do
        echo $1
done
2.1.2 执行此脚本会发现此脚本在无线循环
. test.sh a1 b2 c3 d4 e5
a1
a1
a1
a1
a1
a1
......
2.1.3 创建偏移 1 位的只要还有位置变量就无限循环显示第 1 个位置变量的值的脚本
#!/bin/bash

while [ $# != 0 ];do
        echo $1
        shift
done
2.1.4 执行此脚本会发现此脚本的位置变量在发生变化
. test.sh a1 b2 c3 d4 e5
a1
b2
c3
d4
e5

2.2 shift 在 Shell 脚本中的案例 (偏移 5 位)

2.2.1 创建不偏移的只要还有位置变量就无限循环显示第 1 个位置变量的值的脚本
# vim test.sh

创建以下内容:

#!/bin/bash

while [ $# != 0 ];do
        echo $1
done
2.2.2 执行此脚本会发现此脚本在无线循环
. test.sh a1 b2 c3 d4 e5
a1
a1
a1
a1
a1
a1
......
2.2.3 创建偏移 5 位的只要还有位置变量就无限循环显示第 1 个位置变量的值的脚本
#!/bin/bash

while [ $# != 0 ];do
        echo $1
        shift 5
done
2.2.4 执行此脚本会发现此脚本的位置变量在发生变化
. test.sh a1 b2 c3 d4 e5
a1