shift 是 Shell 脚本中用于处理命令行参数的强大内建命令。它的核心作用就像是一个"队列的弹出操作",能向左移动位置参数,让你在不知道参数总数的情况下,也能逐一或批量地处理它们。
🚀 命令语法与核心行为
- 语法 : shift [n]
- 核心行为 : 它的工作原理是将所有位置参数(1, 2, 3...)向左移动 n 个位置。移动后,左侧的 n 个参数会被丢弃,原来的第 n+1 个参数会变成新的 1。同时,代表参数总数的特殊变量 $# 的值会自动减去 n。
- 参数 n: 这是一个可选的、大于等于 0 的整数,默认值为 1。
- 返回值 : 移动成功时返回 0;如果 n 的值为负数或大于当前参数个数 $#,则会失败并返回一个非零值。
注意 :shift 命令只作用于脚本或函数的位置参数,不会影响脚本名 $0。
💡 如何使用:语法示例
下面是一些直观的示例,演示了 shift 如何改变参数的值。
示例 1:基础用法------不带参数的 shift
bash
#!/bin/bash
echo "原始第一个参数: $1"
shift
echo "移动后第一个参数: $1"
假设执行 ./script.sh arg1 arg2 arg3,输出将是:
text
原始第一个参数: arg1
移动后第一个参数: arg2
示例 2:批量移动------使用 shift n
bash
#!/bin/bash
echo "原始第一个参数: $1"
shift 3
echo "移动3位后, 第一个参数是原来的第4个: $1"
如果执行 ./script.sh A B C D E F,输出将是:
text
原始第一个参数: A
移动3位后, 第一个参数是原来的第4个: D
原来的 A, B, C 被丢弃,原来的 D 成为了新的 $1。