Linux shift命令详解

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。

相关推荐
程序员清风12 小时前
数据处理脚本工程化:日志、配置、命令行与测试
服务器·开发语言·数据库
readhere13 小时前
从ZYNQ7000开发板,学会启动嵌入式Linux系统——入门学习:EBAZ4205篇目录
linux·启动·嵌入式linux·zynq7000·ebaz4205
打工仔折腾 AI14 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
yyuuuzz14 小时前
跨境站点日志时区混乱的排查记录
运维·服务器·网络·云计算·aws·1024程序员节
‎ദ്ദിᵔ.˛.ᵔ₎15 小时前
关于Linux 线程局部存储的认识
linux·运维
GlobalInfo15 小时前
全球及中国风电叶片检测机器人行业研究报告(2026版):市场现状、行业前景与占有率分析
运维·网络·人工智能·机器人
数字新视界16 小时前
一体化机柜在数据中心运维中的创新应用与优势分析
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
隔窗听雨眠16 小时前
KingbaseES平替全链路实践:从迁移评估到可持续运维
运维
skywalk816316 小时前
登到192.168.1.5那台机器,看看今天白天,大约从早晨到晚上,都卡住了。看看因为什么卡住,为什么卡住而没有杀死那个导致卡死的进程,为什么
运维·系统·freebsd
运维行者_17 小时前
网络监控工具怎么选?从设备监控到智能运维的能力清单
运维·服务器·开发语言·网络·人工智能·支持向量机·php