Linux shell脚本中shift的用法说明【转】

摘要:
//blog.csdn.net/chu _ xun/article/details/24796235Linux shell脚本中shift的用法shift命令用于移动(向左移动)参数,依次读取输入参数并打印参数的数量:变量的数量($#)减少1(前一个$1变量被销毁,abcde为$1=a,前三个参数a、b、c被销毁,e(此时d=$1,e=$2)。

本文转载自:http://blog.csdn.net/zhu_xun/article/details/24796235

Linux shell脚本中shift的用法说明

shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本)。
 
示例1:依次读取输入的参数并打印参数个数:
run.sh:
[java] view plain copy
 
  1. #!/bin/bash  
  2. while [ $# != 0 ];do  
  3. echo "第一个参数为:$1,参数个数为:$#"  
  4. shift  
  5. 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:

[java] view plain copy
 
  1. #!/bin/bash  
  2. echo "参数个数为:$#,其中:"  
  3. for i in $(seq 1 $#)  
  4. do  
  5.   eval j=$$i  
  6.   echo "第$i个参数($"$i"):$j"  
  7. done  
  8.   
  9. shift 3  
  10.   
  11. echo "执行shift 3操作后:"  
  12. echo "参数个数为:$#,其中:"  
  13. for i in $(seq 1 $#)  
  14. do  
  15.   #通过eval把i变量的值($i)作为变量j的名字  
  16.   eval j=$$i  
  17.   echo "第$i个参数($"$i"):$j"  
  18. 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的用法说明【转】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇猫狗队列(C++实现)CI中REST URL含有中文怎么处理(报错:The URI you submitted has disallowed characters)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

git subtree用法

什么时候需要 Subtree ?1、当多个项目共用同一个模块代码,而这个模块代码跟着项目在快速更新的时候2、把一部分代码迁移出去独立为一个新的 git 仓库,但又希望能够保留这部分代码的历史提交记录。 git subtree的主要命令有: $ git subtree add --prefix=<prefix> <commit>...

screen的使用

screen的好处就是不会因为远程的操作因网络问题中断掉。 安装 yum -y install screen  创建一个新的窗口 screen -S <name>  查看会话 screen –ls 隐藏并保留当前会话窗口: 按Ctrl+A,再按"D"键 恢复会话窗口: screen -r xx #恢复名字为xx的会话 完全退出 当...

Jenkins Docker安装及Docker build step插件部署配置

生产部署环境:A:192.168.1.2  B:192.168.1.3  两台服务器系统均是Centos 7.3 , Docker版本都1.12.6Jenkins安装操作步骤:  1.在A服务器上使用命令:docker pull jenkinsci/jenkins  获取到Docker镜像;  2.使用命令:docker run -p 8080:8080...

linux下使用convert命令修改图片分辨率【转】

本文转载自:http://blog.csdn.net/mybelief321/article/details/9969949 Convert的resize子命令应该是在ImageMagick中使用较多的命令,它实现了图片任意大小的缩放,唯一需要掌握的就是如何使用它的一些参数测试设定值: 此说明文件中所用的原始文件(src.jpg),宽度:200,高度:15...

MIB Browser使用方法

1.1 安装MIB Browser MIB Browser工具用于查询SNMP Agent上的MIB变量,接收SNMP Agent上报的Trap消息,是用来调试验证NetEco SNMP性能北向接口不可或缺的工具。 1.1.1 获取安装包 MG-SOFT MIB Browser的安装包可以直接访问MG-SOFT的官网获取。 1.1.1 安装 步骤 1 进入...

浏览器自定义协议

查看协议和文件类型的默认应用 Win + I -> 应用 -> 默认应用,按协议指定默认应用。 可以看到有些程序自定义协议在里面,并且可以设置打开此协议的程序,但是并没有发现可以新增协议。只能通过注册表来解决。 自定义浏览器协议 chrome浏览器用到了自定义浏览器协议这一标准。自定义浏览器协议允许在浏览器中使用protocol://url 的...