美文网首页
Shell入门介绍

Shell入门介绍

作者: 小太阳919 | 来源:发表于2020-04-01 14:51 被阅读0次

    Shell脚本执行方式

    1、作为可执行程序
    将上面的代码保存为 test.sh,并 cd 到相应目录:

    chmod +x ./test.sh  #使脚本具有执行权限
    ./test.sh  #执行脚本
    

    注意,一定要写成 ./test.sh,而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。
    2、作为解释器参数
    这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如:

    /bin/sh test.sh
    /bin/php test.php
    

    这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。

    Shell基本语法

    变量

    name="Rephontil"
    方式one  --->   echo $name
    方式two  --->   echo ${name}
    

    ⚠️变量名和等号之间不能有空格,这与我们之前熟悉的所有编程语言都不一样(足以奇葩)。

    数组

    定义数组
    在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:数组名=(值1 值2 ... 值n)
    如:nameArr=("football" "足球" "篮球" "羽毛球")
    读取数组
    读取数组元素值的一般格式是:
    [图片上传失败...(image-d7bee2-1585723762730)]

    {nameArr[0]} -> football
    使用@符号可以获取数组中的所有元素,例如:
    echo ${nameArr[@]} -> football 足球 篮球 羽毛球

    # 取得数组元素的个数
    length=${#array_name[@]}
    # 或者
    length=${#array_name[*]}
    # 取得数组单个元素的长度
    length=${#array_name[n]}
    

    注释

    以"#"开头的行就是注释,会被解释器忽略。
    
    sh里没有多行注释,只能每一行加一个#号。
    如果在开发过程中,遇到大段的代码需要临时注释起来,过一会儿又取消注释,怎么办呢?
    
    每一行加个"#"符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。
    

    传递参数

    我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……

    echo "Shell 传递参数实例!";
    echo "执行的文件名:$0";
    echo "第一个参数为:$1";
    echo "第二个参数为:$2";
    echo "第三个参数为:$3";
    
    在终端执行脚本后log如下(1 2 3为我们传入的3个参数):
    Rephontil:Shell zhouyong$ /bin/sh test.sh 1 2 3
    Shell 传递参数实例!
    执行的文件名:test.sh
    第一个参数为:1
    第二个参数为:2
    第三个参数为:3
    

    注:其中 $0 为执行的文件名。
    另外,还有几个特殊字符用来处理参数,下表所列:


    image.png

    相关文章

      网友评论

          本文标题:Shell入门介绍

          本文链接:https://www.haomeiwen.com/subject/efqauhtx.html