文档章节

shell编程总结10(入参)

心中的理想乡
 心中的理想乡
发布于 2017/02/25 21:31
字数 886
阅读 2
收藏 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
0
Scala 函数式编程_高阶函数_Higher Order Function

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

秋风醉了
2014/12/22
0
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
82
0
SpringMVC总结篇

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

qq58ef2349113e9
2017/04/13
0
0
老鸟教你如何监控网站URL是否正常

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

老男孩oldboy
06/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
今天
1
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
0
0
spring EL 和资源调用

资源调用 import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.springframework.core.io.Resource;......

Canaan_
今天
1
0
memcached命令行、memcached数据导出和导入

一、memcached命令行 yum装telnet yum install telent 进入memcached telnet 127.0.0.1 11211 命令最后的2表示,两位字节,30表示过期时间(秒) 查看key1 get key1 删除:ctrl+删除键 二、m...

Zhouliang6
今天
1
0
Linux定时备份MySQL数据库

做项目有时候要备份数据库,手动备份太麻烦,所以找了一下定时备份数据库的方法 Linux里有一个 crontab 命令被用来提交和管理用户的需要周期性执行的任务,就像Windows里的定时任务一样,用这...

月夜中徘徊
今天
1
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部