shift命令 – 移动位置参数

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

对于某个命令行参数,其参数个数可以不固定,但是可以通过$*或$@进行循环操作。若用户要求Shell在不知道变量个数的情况下,还能逐个处理参数,也就是在$1之后是$2,$2之后是$3。在未运行shift命令之前$1是可用的,当使用shift命令之后,原来的$2会变成$1,并且原有的$1变得不可用,通过$#命令获得的参数个数也会少1。

语法格式:shift [参数]

常用参数:

n 整数

参考实例

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

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 

把参数进行左移3个:

#!/bin/bash
echo -e "./t.sh arg1 arg2 arg3 arg4 arg5 arg6"
str1="${1},${2},${3}"
echo "str1=$str1"
shift 3
str2=$@
echo "str2=$str2"
sh t.sh 1 2 3 4 5 6 7
str1=1,2,3

将参数从左到右逐个移动:

[root@xtuos.com ~]# cat shift.sh
#!/bin/bash
while [ $# -ne 0 ]
do
echo "第一个参数为: $1 参数个数为: $#"
shift
done
[root@xtuos.com ~]# sh shift.sh Lily Lucy Jake Mike
第一个参数为: Lily 参数个数为: 4
第一个参数为: Lucy 参数个数为: 3
第一个参数为: Jake 参数个数为: 2
第一个参数为: Mike 参数个数为: 1

原创文章,作者:云东方,如若转载,请注明出处:https://www.yundongfang.com/1456.html

(0)
上一篇 2021年3月18日 下午4:25
下一篇 2021年3月18日 下午4:31

相关推荐

  • Category: 4:磁盘管理

    fio是测试IOPS的非常好的工具,用来对磁盘进行压力测试和验证。磁盘IO是检查磁盘性能的重要指标,可以按照负 […]

    Linux命令 2021年3月19日
  • arp命令 – 操纵系统arp缓存

    arp命令的英文全拼“Address Resolution Protocol” 。该命令用于操作主机的arp缓存,它可以显示arp缓存中的所有条目、删除指定的条目或者添加静态的ip…

    Linux命令 2021年3月19日
  • testdisk命令 – 修复磁盘文件

    testdisk是一个强大的免费的跨平台的数据恢复工具,这款软件主要被设计用于恢复丢失的分区以及修复那些由于人为或者病毒等原因导致分区表错误而无法启动系统的问题。 语法格式:tes…

    Linux命令 2021年3月19日
  • squidclient命令 – squid客户端管理工具

    squidclient命令使用squid服务的客户端管理工具,它可以查看squid服务的详细运行信息和管理squid服务器。 使用squidclient命令钱必须先启动squid服…

    Linux命令 2021年3月19日
  • fio命令 – 对磁盘进行压力测试和验证

    fio是测试IOPS的非常好的工具,用来对磁盘进行压力测试和验证。磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类。FIO是一个可以产生很多线程或进…

    Linux命令 2021年3月19日
  • pine命令 – 收发电子邮件,浏览新闻组

    pine是个以显示导向为住的邮件处理程序,包括一般电子邮件和新闻组的文章。pine也支持MIME格式,可让用户将MIME的对象保存成文件,甚至指定外挂程序直接开启对象。 语法格式:…

    Linux命令 2021年3月18日
  • rsync命令 – 远程数据同步工具

    rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。 rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送…

    Linux命令 2021年3月19日
  • partx命令 – 显示内核磁盘上分区情况

    partx命令用来告诉内核当前磁盘的分区情况,对一个磁盘或者分区表类型,尝试解析分区表。可以增加或删除分区。但不是fdisk,增加,删除分区对磁盘造成改变,只是告诉内核当前磁盘的分…

    Linux命令 2021年3月19日
  • lvscan命令 – 扫描LVM逻辑卷

    lvscan命令用于扫描当前系统中存在的所有的LVM逻辑卷。使用lvscan指令可以发现系统中的所有逻辑卷,及其对应的设备文件。 语法格式: lvscan [参数] 常用参数: -…

    Linux命令 2021年3月19日
  • vgimport命令 – 导入卷组

    vgimport命令的作用是可以导入卷组。 从不同的系统移动导出物理卷之后,vgimport命令配合相应map文件可以让系统再次认出导出的卷组。 语法格式:vgimport [参数…

    Linux命令 2021年3月19日