目录

命令解释

实例一

示例二


命令解释

位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1$2$3丢弃,$0不移动。不带参数的shift命令相当于shift 1

非常有用的 Unix 命令:shift。我们知道,对于位置变量或命令行参数,其个数必须是确定的,或者当 Shell 程序不知道其个数时,可以把所有参数一起赋值给变量$*。若用户要求 Shell 在不知道位置变量个数的情况下,还能逐个的把参数一一处理,也就是在 $1 后为 $2,在 $2 后面为 $3 等。在 shift 命令执行前变量 $1 的值在 shift 命令执行后就不可用了。

实例一

[root@localhost opt]# cat abc.sh
until [ $# -eq 0 ]
doecho "第一个参数为: $1 参数个数为: $#"shift
done

结果

[root@localhost opt]# bash abc.sh 1 2 3 4
第一个参数为: 1 参数个数为: 4
第一个参数为: 2 参数个数为: 3
第一个参数为: 3 参数个数为: 2
第一个参数为: 4 参数个数为: 1

从上可知 shift 命令每执行一次,变量的个数($#)减一,而变量值提前一位,下面代码用 until 和 shift 命令计算所有命令行参数的和。

示例二

[root@localhost opt]# cat abc.sh
if [ $# -eq 0 ]; thenecho "Usage:x_shift2.sh 参数"exit 1
fisum=0
until [ $# -eq 0 ]
dosum=`expr $sum + $1`shift
done
echo "sum is: $sum"

结果

[root@localhost opt]# bash abc.sh 11 22 33
sum is: 66

Shift 命令还有另外一个重要用途, Bash 定义了9个位置变量,从 $1 到 $9,这并不意味着用户在命令行只能使用9个参数,借助 shift 命令可以访问多于9个的参数。
  Shift 命令一次移动参数的个数由其所带的参数指定。例如当 shell 程序处理完前九个命令行参数后,可以使用 shift 9 命令把 $10 移到 $1。

Shell shift的使用方法相关推荐

  1. python自带的shell是什么-python中执行shell的两种方法总结

    一.使用python内置commands模块执行shell commands对Python的os.popen()进行了封装,使用SHELL命令字符串作为其参数,返回命令的结果数据以及命令执行的状态: ...

  2. java 数组 push pop_JavaScript学习笔记:数组的push()、pop()、shift()和unshift()方法

    JavaScript是一种弱类型语言,不像其它程序语言需要严格定义数据类型.在JavaScript中数组可以任意修改变动,这样也就出现了一个问题,如果边遍历数组边操作数组(比如删除当前项,则所有之后的 ...

  3. Hadoop HBase概念学习系列之hbase shell中执行java方法(高手必备)(二十五)

    hbase shell中执行java方法(高手必备),务必掌握! 1. 2. 3. 4. 更多命令,见scan help.在实际工作中,多用这个!!! API参考: http://hbase.apac ...

  4. PHP+shell实现多线程的方法

    PHP+shell实现多线程的方法 这里介绍怎样借助shell脚本实现多线程. 先写个简单的php代码.这里为了让脚本运行时间更长.方便看效果,sleep一下.呵呵.先看下test.php的代码:ls ...

  5. 数组的push()、pop()、shift()和unshift()方法

    JavaScript的数组是一个拥有堆栈和队列自身优点的global对象.也就是说JavaScript数组可以表现的像栈(LIFO)和队列(FIFO)一样操作.这也是JavaScript数组强大的可操 ...

  6. msf拿到shell显示乱码解决方法以及chcp各种编码的补充

    文章目录 前言 前言 msf拿到shell之后输入命令经常会有乱码,只需要一条命令就能解决. chcp 65001 chcp 65001 的意思是 :改变当前活动代码页为 UTF-8,让当前的批处理窗 ...

  7. linux脚本攻击,恶意shell脚本攻击的方法与预防策略

    前言 网络安全对于互联网从业者而言,一直是一个重要的.绕不开的话题,PowerShell可以给运维人员带来极大的方便,但同时也是被攻击者盯上的重灾区.想想就非常可怕,攻击的人只要能从远程执行shell ...

  8. Shell编程-文件读取方法集锦

    在这里总结一下Shell读取文件的方法 [plain] view plaincopy a), #使用read命令读取一行数据 while read myline do echo "LINE: ...

  9. linux nc反弹命令,详解NC反弹shell的几种方法

    假如ubuntu.centos为目标服务器系统 kali为攻击者的系统,ip为:192.168.0.4,开放7777端口且没被占用 最终是将ubuntu.centos的shell反弹到kali上 正向 ...

最新文章

  1. 生物聚集细胞生物化学反应的组织者Biomolecular condensates: organizers of cellular biochemistry
  2. 利用反射和lambda获取变量名字
  3. vim 全局替换命令
  4. Ubuntu18.04下安装配置darknet
  5. 解决mongodb 取出时是 UTC时间问题
  6. AtCoder Beginner Contest 158 E.Divisible Substring
  7. 简述python的安装过程_安装Python-3.5.2过程中常见的几种错误
  8. raft2020年更新_Raft6月1日更新了什么 Raft6月1日更新内容介绍
  9. 项目实战|基于STM32的无刷电机开环控制
  10. 高级数据结构——海量数据(位图,布隆过滤器)
  11. 任务的同步与通信_读书笔记_6
  12. 使用DXperience开发Asp.net2.0程序——序
  13. 服务机器人常用的定位导航技术及优缺点分析
  14. 4g模块与51单片机通信
  15. 零基础学Python之二集成开发环境(IDE)
  16. 在Android项目上集成Google语音(不使用手机自带引擎)
  17. 【Zabbix-SNMP trap】使用Zabbix的SNMP trap监控类型监控设备的一个例子
  18. FTP上传大文件时连接重置或者中断,重新连接上传也出现同样情况处理办法
  19. 使用socket函数的一些常见错误
  20. 搜索引擎的优化(seo)

热门文章

  1. python中range 函数_Python range()函数用法图文详解
  2. fcpx插件:Beautiful Slideshow - 时尚简洁图片幻灯片开场
  3. 1.9 编程基础之顺序查找 11 连续出现的字符 python
  4. 第31课 3721数-2021.10.30 《小学生C++趣味编程》
  5. 小程序滑动到底部进行分页的功能实例
  6. phpexcel的使用方法详细介绍
  7. html怎么给变量添加样式,通过CSS变量修改样式
  8. centos 7 java安装路径_Linux CentOS 7.0中java安装与配置环境变量的步骤详解
  9. 地图与输出之间的基准面发生冲突_【地图技巧】荒野乱斗: 全球锦标赛全地图英雄推荐...
  10. PHP笔记-随机生成cookie、后台检索、通过session获取ID增强安全性