shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本)。

示例1:依次读取输入的参数并打印参数个数:

run.sh:

#!/bin/bash
while [ $# != 0 ];do
echo "第一个参数为:$1,参数个数为:$#"
shift
done

输入如下命令运行:run.sh a b c d e f

结果显示如下:

第一个参数为:a,参数个数为:6
第一个参数为:b,参数个数为:5
第一个参数为:c,参数个数为:4
第一个参数为:d,参数个数为:3
第一个参数为:e,参数个数为:2
第一个参数为:f,参数个数为:1

从上可知 shift(shift 1) 命令每执行一次,变量的个数($#)减一(之前的$1变量被销毁,之后的$2就变成了$1),而变量值提前一位。

同理,shift n后,前n位参数都会被销毁,比如:

输入5个参数: abcd e

那么$1=a,$2=b,$3=c,$4=d,$5=e,执行shift 3操作后,前3个参数a、b、c被销毁,就剩下了2个参数:d,e(这时d=$1,e=$2,其中d由$4—>$1,e由$5—>$2),参考示例如下:

示例2:

#!/bin/bash
echo "参数个数为:$#,其中:"
for i in $(seq 1 $#)
doeval j=\$$iecho "第$i个参数($"$i"):$j"
doneshift 3echo "执行shift 3操作后:"
echo "参数个数为:$#,其中:"
for i in $(seq 1 $#)
do#通过eval把i变量的值($i)作为变量j的名字eval j=\$$iecho "第$i个参数($"$i"):$j"
done

输出结果为:

参数个数为:5,其中:
第1个参数($1):a
第2个参数($2):b
第3个参数($3):c
第4个参数($4):d
第5个参数($5):e
执行shift 3操作后:
参数个数为:2,其中:
第1个参数($1):d
第2个参数($2):e

linux shell shift命令 参数移动 简介相关推荐

  1. linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)

    linux useradd(adduser)命令参数及用法详解(linux创建新用户命令) useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号 ...

  2. linux+top+常用参数,linux的top命令参数详细说明

    Linux中的top命令是个常用的命令之一,下面由学习啦小编为大家整理了Linux的top命令参数详细说明,希望对大家有帮助! linux的top命令简介 top命令是Linux下常用的性能分析工具, ...

  3. dump命令linux,Linux shell dump 命令

    Linux shell dump 命令用于备份ext2或者ext3文件系统. dump 命令用于备份ext2或者ext3文件系统, 可将目录或整个文件系统备份至指定的设备,或备份成一个大文件. dum ...

  4. shell waite php,linux shell wait命令详解

    wait命令是linux下的一个命令,那么它的语法和用途是什么呢?下面由学习啦小编为大家整理了linux shell wait命令的相关知识,希望大家喜欢! linux shell wait命令 wa ...

  5. Linux—shell—nohup命令使用

    Linux下有时候我们希望某个程序可以一直在后台执行,很多都是使用& 在程序命令结尾来让程序自动运行.  例如: [root@lbogon roy]# ./test.sh & 但是这样 ...

  6. linux shell tr命令,linux shell tr命令详解

    tr命令是linux下的一个命令,那么它的语法和用途是什么呢?下面由学习啦小编为大家整理了linux shell tr命令的相关知识,希望大家喜欢! linux shell tr命令 tr是trans ...

  7. linux shell 关机,linux shell关机命令详解

    当linux系统需要用到关机命令时,那么我们该使用什么命令来进行操作呢?下面由学习啦小编为大家整理了linux shell关机命令的相关知识,希望大家喜欢! linux shell关机命令 在linu ...

  8. Linux Shell nohup命令用法(内含代码演示)

    一.Linux Shell nohup命令用法 在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行.比如我们要运行mysql在后台: ...

  9. Linux Shell nohup命令

    转载:https://www.cnblogs.com/gotodsp/p/6390023.html Linux Shell nohup命令用法 在应用Unix/Linux时,我们一般想让某个程序在后台 ...

最新文章

  1. 潮州市云计算数据中心挂牌 粤东地区规模最大
  2. R假设检验之k-s检验(KOLMOGOROV AND SMIRNOV TEST)
  3. sql实现random sample_web验证码的简单实现
  4. pythonasyncio在哪个版本好_理解Python asyncio的简洁方式
  5. 二十种实战调优MySQL性能优化的经验(转自公众号:架构之家 2018-05-08)
  6. 简单概述 .NET Framework 各版本区别
  7. java语言_java语言学习
  8. 【译】Redis喜提新数据结构:Redis Streams
  9. Jquery中AJAX的应用
  10. java double 初始化_java语言程序员之正确的初始化
  11. editormd生成博客编辑页面
  12. 最全的Java笔试题库之选择题篇-总共234道【61~120】
  13. ue4渲染速度太慢_看虚幻引擎技术大神分享烧脑干货《克服VR眩晕之帧数:提升UE4内容实时渲染效率》...
  14. 蓝桥杯 基础练习 特殊回文数 JAVA
  15. python 正则表达式 前瞻_Python的正则表达式
  16. 京东云服务器搭建php开发环境
  17. 照片像素化项目(on Github)
  18. 【转载声明】关于文章转载到微信公众号
  19. ODX介绍(2)[ DiagLayerStructure]
  20. (转)Unity MRTK语音输入

热门文章

  1. python 字符串分割和拼接_python分割和拼接字符串
  2. 计算体系结构的演进规律
  3. 用 C 语言开发一门编程语言 — 基于 Lambda 表达式的函数设计
  4. 摆线减速器原理、减速比、设计方法
  5. 常见蓝牙模块介绍和AT指令
  6. JavaScript:再谈Tasks和Microtasks
  7. 小米6发布,雷军亲手终结小米低价时代,低价竞争还能走多远?
  8. 设计模式 -- 中介者设计模式 (Mediator Pattern)
  9. WinAPI: PolyBezier - 绘制贝塞尔线
  10. webDriver测试百度登录java版