文档章节

shell编程总结10(入参)

心中的理想乡
 心中的理想乡
发布于 2017/02/25 21:31
字数 886
阅读 2
收藏 0
点赞 0
评论 0

1、向命令行脚本传入参数的方法举例:
    ./shell 10 30
这种就是传入shell脚本里面两个参数10和30

2、命令行内部访问传入的变量的方法:
$0:表示的是程序名;$1:表示的是传入的第一个参数;$2:表示的是传入的第二个参数
    注意:
    (1)如果传入的参数是有空格的话,必须加上单引号
    (2)如果脚本需要多于9个的命令行参数的话,在第九个变量之后,你必须使用加上花括号的,例如:${10}

3、测试参数:当脚本传入的参数,并没有脚本内部使用的参数的时候,就会报错。所以我们在使用脚本传入的参数之前,最好进行参数的校验
    举例:
        #!/bin/bash
        if[ -n "$1" ]
        then
            echo Hello $1.
        else
            echo "Sorry"
        fi
    说明:使用-n参数进行检测是否有数据

4、特殊参数变量:$#(表示命令行运行时输入了多少个参数)
    访问最后一个传入参数:
        (1)${!#}
        (2)params=$#
             $params

5、$*与$@两个变量的使用
    $*:会将传入的所有参数当成一个整体的参数
    $@:会将传入的所有参数当成每一个单独的参数来处理

6、移动变量:使用shift命令,默认情况下他会将每个参数变量减一,所以变量$3的值会移动到$2,变量$2的值会移动到$1,变量$1的值则会被删除,$0不会变,主要用来遍历不太清楚传入的参数情况
    另外:我们可以给shift命令提供一个参数,来改变移动的位数,例如:shift 2
    提醒:一旦使用shift之后,被删除的参数将被丢掉并且无法恢复

7、处理简单的选项方法:
    使用case语句:
        #!/bin/bash
        while [ -n "$1" ]
        do
            case "$1" in
            -a) echo "1";;
            -b) echo "2";;
            -c) echo "3";;
            *) echo "4";;
            esac
            shift
        done
8、简单的将参数与选项分隔开来的方法:使用--来分隔

9、使用复杂的输入:例如输入的时候选项放到一起:-abc,或者一个选项后面接选项参数:-a test -b tess,平时用的不多,这些先略过,在书中的282页开始看

10、获取用户的输入:使用read命令接受从标准输入(键盘)或是另一个文件描述符的输入
    举例:
        #!/bin/bash
        echo -n "Enter you name:"
        read name
        echo "Hello $name,welcome to my program"
    参数:-p(允许直接在read命令行指定提示符)
          read -p "Enter you name:" age
          另外,可以在read后面接多个参数,输入的时候以空格分隔的将每个输入分配各个参数,分配完了,还有输入的话,将会将剩余的输入分配给最后一个参数变量
          -t(指定read命令超时选项):read -t 5
          -n1(指定read命令接受单个字符,只要你按下单个字符回答后,read命令就会接受输入并将它传给变量)
          -s(静默输入,输入的时候不显示输入字符,例如输入密码)

11、从文件中读取输入:主要使用cat与read命令结合的方式
    举例:
        #!/bin/bash
        cat test | while read line
        do
            echo "Line : $line"
        done
    说明:while循环会继续通过read命令处理文件中的行,知道read命令读取不到内容的时候,就会非零的退出码,然后结束while循环

    
 

© 著作权归作者所有

共有 人打赏支持
心中的理想乡
粉丝 8
博文 68
码字总数 61989
作品 0
深圳
程序员
shell编程(二)

博主名: 李常明 博文地址: http://keep88.blog.51cto.com 此笔记出自老男孩书籍: 跟老男孩学linux运维 shell编程实战 shell变量知识进阶与实践 1、shell中的特殊位置参数变量: 例如: 1)...

咖啡猫Mr ⋅ 2017/05/31 ⋅ 0

Linux Shell学习简单小结(更新中……)

if-fi #! /bin/bash 删除文件 和 新建文件 file=readmefunction delFile(){ }function addFile(){ }delFileaddFile Result: (没有readme文件) [work shell]$ sh if_e.sh add readme ... [wo......

长平狐 ⋅ 2013/01/06 ⋅ 0

Scala 函数式编程_高阶函数_Higher Order Function

Scala 函数式编程高阶函数Higher Order Function 高阶函数的基础就是 函数作为参数传递给另外一个函数,作为参数的函数可以是匿名函数或者函数字面量,也包括用def 关键字定义的函数。 ht...

秋风醉了 ⋅ 2014/12/22 ⋅ 0

老鸟教你如何监控网站URL是否正常

监控网站URL是否正常最常见的方法莫过于wget和curl命令了,这两个命令都是非常强大的,强大到网友查看帮助都无从选择的地步了,今天呢,老男孩老师正好录制Shell编程实战课程,因此,顺便总结...

老男孩oldboy ⋅ 06/07 ⋅ 0

TIOBE 12月编程语言排行榜:C 为何一蹶不振?

C 语言自 2015 年 11 月以来就有下降趋势。在今年之前的整个 15 年的时间内,其评分都在 15%-20% 之间波动,但今年却一反常态,评分跌至 10% 以下,并且没有看到回升的势头。C 语言到底发生了...

达尔文 ⋅ 2016/12/08 ⋅ 90

SpringMVC总结篇

SpringMVC是基于MVC设计理念的一款优秀的Web框架,是目前最流行的MVC框架之一,SpringMVC通过一套注解,让POPJ成为处理请求的控制器,而无需实现任何接口,然后使用实现接口的控制器也完全没...

qq58ef2349113e9 ⋅ 2017/04/13 ⋅ 0

useradd - 帐 号 建 立 或 更 新 新 使 用 者 的 资 讯

USERADD(8) USERADD(8) 名 称 useradd - 帐 号 建 立 或 更 新 新 使 用 者 的 资 讯 语 法 useradd [-c comment] [-d home_dir] [-e expire_date] [-f inactive_time] [-g initial_group] ......

钟义林 ⋅ 2014/03/12 ⋅ 0

2017-12-5Linux基础知识(15)shell编程

shell编程是在Linux的基础知识中所必须掌握的语言,它也是一个命令的集合,如果学会的话,我们将会事半功倍,将重复的操作通过shell编程脚本来实现,减轻了一定的负担,那么现在就来讲一下s...

刘祥宇 ⋅ 2017/12/07 ⋅ 0

Java并发编程中级篇(三):使用CountDownLatch控制多线程并发等待

你是否遇到这这样一种情况,我们要举行一个视频会议,有若干的参会人员,需要等待所有的人员到齐后视频会议才能开始。 为了解决这个问题,Java API提供了一个线程同步辅助类CountDownLatch,...

阿拉德大陆的魔法师 ⋅ 2016/11/26 ⋅ 0

Ubuntu 12.10 新版本走向何方?

5月12日,Ubuntu 12.04版本发布不过才十来天,Ubuntu 12.10新版本开发新征程又要开始了。对此,有人也许会说:唉,Ubuntu,你这家伙烦人不烦人?怎么没完没了?快把人逼疯了,我有点儿受不了...

oschina ⋅ 2012/05/13 ⋅ 31

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周三乱弹 —— 这样的女人私生活太混乱了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 胖达panda :你经历过体验到人生的大起大落吗?我一朋友在10秒内体验了,哈哈。@小小编辑 请点一首《almost lover》送给他。 《almost love...

小小编辑 ⋅ 47分钟前 ⋅ 7

自己动手写一个单链表

文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。 一、概述 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对...

公众号_好好学java ⋅ 53分钟前 ⋅ 0

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部