返回顶部
首页 > 资讯 > 精选 >Shell编程中Shift的用法是什么
  • 106
分享到

Shell编程中Shift的用法是什么

2023-06-20 15:06:28 106人浏览 泡泡鱼
摘要

这篇文章主要讲解了“shell编程中Shift的用法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shell编程中Shift的用法是什么”吧!位置参数可以用shift命令左移。比如sh

这篇文章主要讲解了“shell编程中Shift的用法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shell编程中Shift的用法是什么”吧!

位置参数可以用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 命令执行后就不可用了。

示例如下:

#测试 shift 命令(x_shift.sh)until [ $# -eq 0 ]doecho "第一个参数为: $1 参数个数为: $#"shiftdone执行以上程序x_shift.sh:$./x_shift.sh 1 2 3 4

结果显示如下:

第一个参数为: 1 参数个数为: 4
第一个参数为: 2 参数个数为: 3
第一个参数为: 3 参数个数为: 2
第一个参数为: 4 参数个数为: 1

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

#shift 上档命令的应用(x_shift2.sh)if [ $# -eq 0 ]thenecho "Usage:x_shift2.sh 参数"exit 1fisum=0until [ $# -eq 0 ]dosum=`expr $sum + $1`shiftdoneecho "sum is: $sum"

执行上述程序:

$x_shift2.sh 10 20 15

其显示结果为:

45

  Shift 命令还有另外一个重要用途, Bsh 定义了9个位置变量,从 $1 到 $9,这并不意味着用户在命令行只能使用9个参数,借助 shift 命令可以访问多于9个的参数。

  Shift 命令一次移动参数的个数由其所带的参数指定。例如当 shell 程序处理完前九个命令行参数后,可以使用 shift 9 命令把 $10 移到 $1。

扩展:Shell grep 命令扩展增强

背景: 线上排查问题需要找出有某个特征的日志,并获取这些日志的完整调用日志链路。 

比如, 通过某个tag 获取到了这些日志的 请求id 【Span ID】,

cat xxxx.log | grep '某tag' | awk  -F '某tag' '{print $2}'

然后还需要再一步取得所有SpanId的完整日志链。显然目前我们需要使用 xargs 来批处理执行。 但这里有个问题。 grep 无法支持这种用法。

如下:

[localhost ~]$ cat xxxxxx.log | grep '某tag' | awk  -F '某tag' '{print $2}'  | xargs grep xxxxxx.loggrep: 某SpanId: No such file or directory

grep 第一个参数必须是 关键词正则 ,其后跟随文件路径。

所以为了解决这个问题,我们需要使用一个改造后的SHELL脚本,这里命名为 grepx ,用于增强 grep 命令:

#!/bin/bashFILE_PATH="$1*"COUNT=0while  [ $# -gt 0 ]do    if [ $COUNT -gt 0 ]    then        grep "$1" $FILE_PATH        #输出空白行用来隔断日志          echo -e "\n\n"    fi    #shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下,依次遍历每个参数    shift    let COUNT=COUNT+1done

原理是对调参数位置, 再通过 shift 命令移动参数,批量读取管道传递过来的参数,或者 控制台传递的参数。

然后 shell 脚本便可以写成如下:

cat xxxxxx.log | grep '某tag' | awk  -F '某tag' '{print $2}'  | xargs ~/grepx xxxxxx.log

感谢各位的阅读,以上就是“Shell编程中Shift的用法是什么”的内容了,经过本文的学习后,相信大家对Shell编程中Shift的用法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Shell编程中Shift的用法是什么

本文链接: https://lsjlt.com/news/297878.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Shell编程中Shift的用法是什么
    这篇文章主要讲解了“Shell编程中Shift的用法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shell编程中Shift的用法是什么”吧!位置参数可以用shift命令左移。比如sh...
    99+
    2023-06-20
  • Shell编程中Shift的用法小结
    位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令相当于shift 1。 非常有用的 Unix 命...
    99+
    2022-06-04
    Shell编程中Shift用法 Shell grep 命令
  • Shell编程中Shift怎么使用
    在Shell编程中,`shift`命令用于将命令行参数列表向左移动一个位置。它会丢弃第一个参数,并将所有参数的位置向左移动一个位置。以下是`shift`命令的使用方式:```shellshift [n]````n`是一个可选的数字参数,...
    99+
    2023-08-09
    Shell Shift
  • Bash Shell中Shift用法分享
    shift可以用来向左移动位置参数。Shell的名字 $0第一个参数 $1第二个参数 $2第n个参数 $n所有参数 $@ 或 $*参数个数 $# shift默认是shift 1以下边为例: cat shi...
    99+
    2022-06-04
    Bash Shell Shift
  • shift妙用之解决shell编程中的入参问题
    我说过了,shell是我的常规武器,目前虽然还不纯熟,但是我爱shell这门语言,在Linux下面混,总要写脚本。程序员是有基因,对编程语言是有偏好的,你让我写C代码,我会觉得很爽,会有困难,会有痛苦的摸索...
    99+
    2022-06-04
    妙用 shift shell
  • 如何使用shift解决shell编程中的入参问题
    这篇文章主要介绍如何使用shift解决shell编程中的入参问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!shell编程经常会遇到参数个数不定的这种情况,这种情况怎么处理呢?shift就要闪亮登场了。 $#是入参...
    99+
    2023-06-09
  • Shift怎么在Bash Shell中使用
    这篇文章给大家介绍Shift怎么在Bash Shell中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。shift可以用来向左移动位置参数。Shell的名字 $0第一个参数 $1第二个参数 $2第n个参数 $n所有参...
    99+
    2023-06-09
  • javascript shift()方法有什么用
    这期内容当中小编将会给大家带来有关javascript shift()方法有什么用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在javascript中,shift()方...
    99+
    2024-04-02
  • linux中Shell脚本编程规范是什么
    这篇文章主要介绍了linux中Shell脚本编程规范是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。代码风格规范开头有“蛇棒”所谓shebang其实就是在很多脚本的第一行...
    99+
    2023-06-15
  • JavaScript中shift()方法怎么用
    小编给大家分享一下JavaScript中shift()方法怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!shift()删除...
    99+
    2024-04-02
  • Python 编程中的算法是什么?
    在 Python 编程中,算法是指一组有序的操作步骤,用于解决某个特定问题的方法。Python 中的算法可以用来解决各种问题,例如排序、查找、图像处理等等。本文将介绍一些常见的算法及其在 Python 中的实现。 一、排序算法 排序算法是...
    99+
    2023-06-15
    编程算法 unix 容器
  • linux编写shell程序的步骤是什么
    编写Linux Shell程序的一般步骤如下:1. 定义脚本文件:创建一个新的文本文件,文件名以.sh结尾,例如script.sh。...
    99+
    2023-09-22
    shell linux
  • linux编写shell脚本的方法是什么
    编写Linux shell脚本有以下几个步骤:1. 选择shell:Linux有多种shell,如Bash、sh、csh等。其中Ba...
    99+
    2023-09-17
    linux shell
  • 什么是异步编程框架,它在GO编程算法中的应用是什么?
    异步编程框架是一种编程模式,它的目的是在代码执行期间,能够同时执行多个任务,并在任务完成时返回结果。这种编程模式通常使用回调函数来处理任务结果,而不是等待任务完成后再继续执行下一个任务。GO编程语言是一种支持异步编程的语言,在GO编程算法中...
    99+
    2023-07-19
    编程算法 框架 异步编程
  • Python 编程中最有用的算法是什么?
    Python 是一种广泛使用的编程语言,拥有丰富的库和工具,适用于各种任务。在 Python 编程中,最有用的算法是什么?本文将介绍 Python 编程中最常用的算法,并提供演示代码,帮助你更好地理解这些算法的实现和应用。 排序算法 ...
    99+
    2023-07-19
    编程算法 linux django
  • C语言编程中if的用法是什么
    C语言编程中if的用法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。顺序,选择和循环是程序的三大基本结构,无论多么复杂的程序,都是用这三种结构写出来的。i...
    99+
    2023-06-03
  • shell 编程中空格的使用方法
    1.定义变量时, =号的两边不可以留空格. eg: gender=femal————right gender =femal———wrong gender= femal———wrong 2.条件测试语句 [ ...
    99+
    2022-06-04
    空格 使用方法 shell
  • 什么是Java编程中常用的算法类型?
    Java编程是目前广泛使用的一种编程语言,它具有良好的跨平台性和丰富的编程库。在Java编程中,算法是不可或缺的一部分。本文将介绍Java编程中常用的算法类型,并通过演示代码来帮助读者更好地理解。 一、排序算法 排序算法是常见的算法类型之一...
    99+
    2023-09-25
    编程算法 laravel 对象
  • 数组在编程算法中的作用是什么?
    数组是编程中最常用的数据结构之一。它可以存储一系列相同类型的数据,且这些数据在内存中是连续存储的。由于数组的高效存储和访问特性,它在算法设计和编程中扮演着重要的角色。 一、数组的定义和使用 数组是一种数据结构,它由相同类型的元素组成的有序...
    99+
    2023-11-12
    数组 编程算法 numpy
  • Python编程算法中的对象是什么?
    在Python编程中,对象是指一切皆为对象。Python是一种面向对象的编程语言,它将所有的数据和函数视为对象,并通过对象之间的交互来实现程序的运行。因此,对象是Python编程算法中的核心概念之一。 在Python中,对象可以是数字、字...
    99+
    2023-10-16
    编程算法 对象 编程算法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作