首页 > 系统相关 >linux 中 shift命令

linux 中 shift命令

时间:2023-11-05 17:15:10浏览次数:35  
标签:test2 ## shift pc1 命令 参数 linux root

 

linux 中shift命令应用与函数内部,调用一次,表示参数左移一位;$#表示shell参数的个数,调用shift一次, $#减少1.

分别处理每个参数,移出去的参数不再可用;

举例:

001、example 1

[root@pc1 test2]# ls
a.sh
[root@pc1 test2]# cat a.sh                ## 测试脚本
#!/bin/bash

echo "parameters: $*"                     ## $*是shell脚本内置变量,输出所有的参数
echo "num: $#"                            ## $#是shell内置变量,表示参数的个数
shift                                     ## 次数执行一次shift,参数左移一位
echo "shift one time: parameters: $*"     ## 输出所有参数
echo "shift one time: num: $#"            ## 输出此时的参数个数

[root@pc1 test2]# bash a.sh 10 20 30 40     ## 执行脚本,随机给与4个参数
parameters: 10 20 30 40
num: 4
shift one time: parameters: 20 30 40        ## 执行一次shift后,参数10消失,说明shift使总的参数左移一位
shift one time: num: 3

 

 

 

 002、example 2

[root@pc1 test2]# ls
a.sh
[root@pc1 test2]# cat a.sh                      ## 测试程序
#!/bin/bash

until [ $# -eq 0 ]                              ## until条件测试语句,不满足条件($#总参数个数为0),循环体一直执行
do
        echo "第一个参数为: $1 参数个数为: $#"      ## 输出第一个参数和参数个数
        shift                                   ##  循环体执行一次,参数左移一次,总参数个数减少1
done
[root@pc1 test2]# bash a.sh 10 20 30            ## 执行程序, 一共执行了三次循环体,依次左移三次,参数个数$#为0时,循环结束
第一个参数为: 10 参数个数为: 3
第一个参数为: 20 参数个数为: 2
第一个参数为: 30 参数个数为: 1

 

003、example 3

[root@pc1 test2]# ls
a.sh
[root@pc1 test2]# cat a.sh
#!/bin/bash
if [ $# -le 0 ]; then            ## 条件判断,无参数时,退出程序
echo "Not enough parameters"
exit 1
fi
sum=0
while [ $# -gt 0 ]               ## 当有参数时,执行循环体,参数个数为0时,退出循环
do
sum=`expr $sum + $1`             ## 变量sum 对 参数递加
shift
done

echo $sum                        ## 输出所有参数的和
[root@pc1 test2]# bash a.sh 10 20 30
60

 

参考:

01、https://blog.csdn.net/dai9812/article/details/128702875

 

标签:test2,##,shift,pc1,命令,参数,linux,root
From: https://www.cnblogs.com/liujiaxin2018/p/17810727.html

相关文章

  • linux 输入长命令行时不会自动换行只会回到行首,并且覆盖前面的内容。解决办法。
    CustomizeCode\e[Begincolorchanges\e[0mExitcolor-changemode0;32mSpecifythecolormodeThefirstnumberinthecolorcodespecifiesthetypeface:•0–Normal•1–Bold(bright)•2–Dim•4–UnderlinedThesecondnumberindicatesthecol......
  • linux shell 脚本中local的用法
     linux中local为一个关键字,用于限制变量的作用范围(作用域),通常应用在函数的内部. 举例如下:001、在函数内部定义变量,不使用关键字local[root@pc1test2]#lsa.sh[root@pc1test2]#cata.sh##测试函数#/bin/bashfunctiondb1(){value=10......
  • linux系统之五 网卡驱动初始化解析
    一、环境说明内核版本:Linux3.10内核源码地址:https://elixir.bootlin.com/linux/v3.10/source(包含各个版本内核源码,且王页可全局搜索函数)网卡:Intel的igb网卡网卡驱动源码目录:drivers/net/ethernet/intel/igb/二、网卡驱动的加载网卡需要有驱动才能工作,驱动是加载到内核中......
  • Linux下的minicom安装和使用教程
    [TOC]Linux下的minicom安装和使用教程在窗口中输入sudosu-,获取root权限test@ubuntu:~$输入sudosu-[sudo]passwordfortest:输入密码root@ubuntu:~#(获取root权限)(3)用apt-getinstallminicom,下载安装软件root......
  • linux同步机制-completion
    一、completion1.1什么是completionlinux内核中,完成量completion是一种代码同步机制。如果有一个或多个线程必须等待某个内核活动操作达到某个点或某个特定状态,那么completion完成量可以提供一个无竞争的解决方案。1.2completion的使用1.2.1定义并初始化完成量//方式一......
  • 命令行文本计数统计程序
    这个作业属于哪个课程https://edu.cnblogs.com/campus/zjlg/23rjjsjc这个作业的目标写一个命令行文本计数统计程序,统计字符、句子等的个数,同时学会单元测试和性能测试姓名-学号施晨安-2021330301021Gitee地址:https://gitee.com/dawn-calm/Software-Fundamentals......
  • Linux第五次周总结
    第一部分X-shell怎样连接虚拟机1、双击进入软件,点击左上角的"文件",选择选项列表中的"新建"。   2、在打开的窗口界面中,输入虚拟机的相关信息,比如IP地址与端口号等。 3、并将下方中的"连接异常关闭时自动重新连接"勾选上,点击"确定"。 4、然后在弹出的警告窗口中,......
  • linux shell中 创建数组及数组的基本操作
     001、创建数组a、方法1[root@pc1test01]#ay1=(100200"abc""xyz")##创建数组 b、方法2[root@pc1test01]#ay2[0]=100[root@pc1test01]#ay2[1]=200[root@pc1test01]#ay2[3]="mn" 002、访问数组的全部元素[root@pc1test01]#ay1=(100......
  • Linux 备忘手册
    Linux备忘手册B站视频介绍:程序员Linux备忘手册来了解决学完就忘高效查询一分钟定位80%以上高频问题终于来了,耗时一个半月,修改超过10次,程序员Linux备忘手册终于来了。长图适合你在初学时挂在机房、家里或者是宿舍的墙上,随查随用。我还为大家准备了一个A4纸的手册版,这个就适......
  • Linux安装maven(详细教程)
    yuanwen:https://www.cnblogs.com/outrun/p/17708907.htmlhttps://www.cnblogs.com/outrun/p/17708907.htmlLinux安装maven(详细教程)Linux安装maven(详细教程)一、简介Maven是意第绪语,意思是“知识的积累者”,最初是为了简化JakartaTurbine项目中的构建过程。有几......