iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >shift妙用之解决shell编程中的入参问题
  • 326
分享到

shift妙用之解决shell编程中的入参问题

妙用shiftshell 2022-06-04 21:06:56 326人浏览 泡泡鱼
摘要

我说过了,shell是我的常规武器,目前虽然还不纯熟,但是我爱shell这门语言,在linux下面混,总要写脚本。程序员是有基因,对编程语言是有偏好的,你让我写C代码,我会觉得很爽,会有困难,会有痛苦的摸索

我说过了,shell是我的常规武器,目前虽然还不纯熟,但是我爱shell这门语言,在linux下面混,总要写脚本。程序员是有基因,对编程语言是有偏好的,你让我写C代码,我会觉得很爽,会有困难,会有痛苦的摸索和学习,但是,我愿意;学习shell/python,我也很乐意,甚至Lisp这种冷门的语言我也充满了好奇,虽然现在Go和Erlang我一点也不懂,但是我按耐不住对这两种语言的兴趣,只要我抽出手来,一定会和他们缠绵一番。有爱就会有恨,我痛苦地意识到到自己是个很情绪化的程序员,哪怕我一遍遍地骂自己bitch is bitchy,一遍遍的告诉自己要端正态度,学习CSS/html/仍然让我痛苦的死去活来,可以预计的是,让我学习Java我也会很痛苦(我也清楚地明白,痛苦之烈一定不如学习CSS/HTML的痛苦)。我知道我在跑题,我贱人就是矫情,但是我压抑的太难受了,不找个地方发泄一下,我会把自己憋坏。

shell编程经常会遇到参数个数不定的这种情况,这种情况怎么处理呢?shift就要闪亮登场了。

$#是入参的个数,
$@是当前所有的入参
$0是脚本的名字
$1是第一个入参,$2是第二个入参。。。。

Bash定义了$1到$9,一共9个位置变量,这就决定了我们不能无限制的用$11之类的来获取更多的入参。
这时候就需要用shift了,shift会将入参右移,如下图所示:

查看图片


我们看一段shell代码,加深理解:


root@manu:~/code/shell/temp# cat test.sh
#!/bin/sh
until [ $# -eq 0 ]
do
echo "$@"
shift
done


看下输出:


root@manu:~/code/shell/temp# ./test.sh 10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
9 8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
7 6 5 4 3 2 1
6 5 4 3 2 1
5 4 3 2 1
4 3 2 1
3 2 1
2 1
1


现在,如果入?⒌母鍪?欢ǎ?颐侨绾未?砣氩文兀

until [ -z "$1" ] # Until all parameters used up
do
store_input $1
shift
done

上面这个伪码片段表明如何处理不定的入参,通过store_input,我们将每一个入参保存下来,然后,我们就可以处理了。
最后的最后,给出一个处理不定参数的例子:

manu@manu:~/code/shell/temp$ cat sum.sh
#!/bin/sh
sum=0
until [ -z $1 ]
do
sum=`echo $sum+$1 |bc`
shift
done
echo $sum

输出如下:

manu@manu:~/code/shell/temp$ ./sum.sh 1 2 3 4 5 6 7 8 9 10
55


参考文章:
Http://www.lsjlt.com/article/40259.htm

--结束END--

本文标题: shift妙用之解决shell编程中的入参问题

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用shift解决shell编程中的入参问题
    这篇文章主要介绍如何使用shift解决shell编程中的入参问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!shell编程经常会遇到参数个数不定的这种情况,这种情况怎么处理呢?shift就要闪亮登场了。 $#是入参...
    99+
    2023-06-09
  • Shell编程中Shift的用法是什么
    这篇文章主要讲解了“Shell编程中Shift的用法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shell编程中Shift的用法是什么”吧!位置参数可以用shift命令左移。比如sh...
    99+
    2023-06-20
  • 解决ubuntu长按shift键无法进入grub引导加载程序的问题
    【问题描述】: 在虚拟机中,长按shift键无法进入ubuntu的grub引导加载程序 【系统版本】: ubuntu-22.04.2 (其他版本实测有效)VMware Workstation 17 Pro 【参考博客】: (72条消息) U...
    99+
    2023-09-17
    linux ubuntu 服务器
  • np.meshgrid中的indexing参数问题解决
    目录二维meshgrid函数三维meshgrid函数特别说明meshgrid函数在二维空间中可以简单地理解为将x轴与y轴的每个位置的坐标关联起来形成了一个网格,我们知道空间中的点是由...
    99+
    2023-03-13
    np.meshgrid的indexing参数 np.meshgrid indexing
  • 如何解决feign调用中文参数被encode编译的问题
    这篇文章主要介绍如何解决feign调用中文参数被encode编译的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Feign调用中文参数被encode编译原因在实现一个feign调用时使用了Post请求,并且拼接u...
    99+
    2023-06-29
  • mybatis中的if test判断入参值问题怎么解决
    本文小编为大家详细介绍“mybatis中的if test判断入参值问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“mybatis中的if test判断入参值问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的...
    99+
    2023-06-30
  • PHP编程算法:如何解决HTTP路径中的路径参数问题?
    在Web开发中,我们经常需要从URL中获取参数来完成一些操作。对于查询参数(query string),PHP提供了$_GET和$_POST两个超全局变量来获取,但是对于路径参数(path parameter),PHP并没有提供直接获取的...
    99+
    2023-08-18
    编程算法 http path
  • 用 Python 解决 LeetCode 编程算法问题:函数的神奇之处!
    编程算法问题一直是程序员们的头疼之一。LeetCode 是一个专门为程序员提供算法题目的平台,其中包含了许多经典的编程问题。解决这些问题需要程序员们具备良好的编程技巧和算法思维能力。在这篇文章中,我们将介绍如何用 Python 解决 Le...
    99+
    2023-06-27
    leetcode 函数 编程算法
  • 解决python3 中的np.load编码问题
    由于在Python2 中的默认编码为ASCII,但是在Python3中的默认编码为UTF-8。 问题: 所以在使用np.load(det.npy)的时候会出现错误提示: you m...
    99+
    2024-04-02
  • np.meshgrid中的indexing参数问题如何解决
    这篇文章主要介绍“np.meshgrid中的indexing参数问题如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“np.meshgrid中的indexing参数问题如何解决”文章能帮助大家解...
    99+
    2023-07-05
  • Python中的并行编程问题及解决方案
    Python中的并行编程问题及解决方案,需要具体代码示例随着多核处理器的普及和计算任务的复杂化,以及数据处理方面的需求增加,利用并行编程可以有效地提高程序的执行效率。Python作为一种高级编程语言,具有简洁、易读、易写的特点,也提供了一些...
    99+
    2023-10-22
    解决方案 并行编程 关键词:Python
  • Java Mail常见问题解答:解决邮件编程中的难题
    Java Mail常见问题解答 如何在Java中发送电子邮件? Java Mail提供了一个简单的API来发送电子邮件。以下是一个演示代码,展示如何使用Java Mail发送电子邮件: import javax.mail.*; impor...
    99+
    2024-02-05
    Java Mail, 邮件编程, Java, SMTP, POP3, IMAP
  • JAVA8妙用Optional解决判断Null为空的问题方法
    目录引言API介绍1、Optional(T value),empty(),of(T value),ofNullable(T value)2、orElse(T other),orEls...
    99+
    2024-04-02
  • Python中GUI编程中常见的问题及解决方法
    Python中GUI编程中常见的问题及解决方法GUI(图形用户界面)编程是指通过可视化界面来与用户进行交互的编程方式。Python提供了多种GUI编程库,如Tkinter、PyQt等,使开发者可以快速构建出漂亮、交互性强的应用程序。然而,在...
    99+
    2023-10-22
    问题 解决方法 关键词:GUI编程
  • 数据库编程中的Python问题及解决方法
    数据库编程中的Python问题及解决方法引言:在现代软件开发中,数据库是不可或缺的一部分。Python作为一门功能强大的编程语言,可以与多种数据库进行交互和操作。然而,在数据库编程过程中,我们可能会遇到一些问题。本文将介绍一些常见的Pyth...
    99+
    2023-10-22
    Python 编程 关键词:数据库
  • JavaScript编程中的常见算法问题解决方案
    JavaScript是一种广泛使用的编程语言,其应用范围涉及到Web开发、移动应用开发、游戏开发等领域。在JavaScript编程过程中,常常需要使用到各种算法,例如排序、搜索、字符串处理等。本文将介绍一些JavaScript编程中常见的算...
    99+
    2023-10-15
    编程算法 javascript git
  • Go 编写的 Shell 同步工具:索引问题解决方案
    在日常开发中,我们经常需要将本地的文件同步到远程服务器上。而 Shell 脚本是实现文件同步的常用方式。但在实际开发中,我们会发现 Shell 脚本同步文件时存在一些问题,其中最常见的问题就是索引问题。 索引问题指的是在同步文件时,She...
    99+
    2023-10-31
    shell 同步 索引
  • 使用Mybatis遇到的坑之Integer类型参数问题怎么解决
    这篇文章主要讲解了“使用Mybatis遇到的坑之Integer类型参数问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用Mybatis遇到的坑之Integer类型参数问题怎么解决...
    99+
    2023-07-05
  • Python中多进程编程的常见问题及解决策略
    Python中多进程编程的常见问题及解决策略引言:随着计算机硬件的不断发展,多核处理器已经变得越来越常见。为了充分利用硬件资源,提高程序的执行效率,多进程编程成为了一个重要的技术。但是在使用多进程编程时,我们也常常会遇到一些问题,比如进程间...
    99+
    2023-10-22
    多进程编程 常见问题 解决策略
  • 多线程编程中遇到的Python问题及解决方法
    多线程编程中遇到的Python问题及解决方法Python是一种广泛使用的编程语言,它有许多优点,其中之一就是可以通过多线程来提高程序的执行效率。然而,在多线程编程中,也会遇到一些常见的问题。本文将讨论一些常见的多线程编程问题,并提供相应的解...
    99+
    2023-10-22
    死锁(Deadlock):多线程编程中
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作