文档章节

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循环

    
 

© 著作权归作者所有

共有 人打赏支持
心中的理想乡
粉丝 19
博文 74
码字总数 91880
作品 0
深圳
程序员
jdk8新特性之双冒号 :: 用法及详解

jdk8的新特性有很多,最亮眼的当属函数式编程的语法糖,本文主要讲解下双冒号::的用法。 概念 类名::方法名,相当于对这个方法闭包的引用,类似js中的一个function。比如: (Function在jav...

萤火的萤火
09/05
0
0
jdk8新特性之双冒号 :: 用法及详解

jdk8的新特性有很多,最亮眼的当属函数式编程的语法糖,本文主要讲解下双冒号::的用法。 概念 类名::方法名,相当于对这个方法闭包的引用,类似js中的一个function。比如: (Function在jav...

wangbo888
09/04
0
2
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
TIOBE 12月编程语言排行榜:C 为何一蹶不振?

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

达尔文
2016/12/08
19.1K
90

没有更多内容

加载失败,请刷新页面

加载更多

[Hive]JsonSerde使用指南

注意: 重要的是每行必须是一个完整的JSON,一个JSON不能跨越多行,也就是说,serde不会对多行的Json有效。 因为这是由Hadoop处理文件的工作方式决定,文件必须是可拆分的,例如,Hadoop将在...

Mr_yul
19分钟前
0
0
54:mysql修改密码|连接mysql|mysql常用命令

1、mysql修改密码: root用户时mysql的超级管理员,默认mysql的密码是空的,直接可以连接上去的,不过这样不安全; 注释:为了方便的使用mysql,需要把mysql加入到环境变量里; #后续自己输入mys...

芬野de博客
26分钟前
0
0
鼠标单击复制粘贴标签中的内容

<span ref="spanContentOne" id="spanContentOne" style="font-size: 14px;">或许不是最亮眼,总比瞎买强一点</span><!--<input type="button" @click="copyClick('1')" value="复制" />-......

帝子兮
30分钟前
0
0
使用axel多线程疯狂下载

在Linux中比较常见见的下载工具是curl和wget,但是下载比较大的文件两者都不支持多线程, 断点续传的作用不见得能发挥到最大。今天介绍一个axel工具,开启多线程疯狂下载。 安装 Fedora/Cen...

linuxprobe16
32分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部