【shell 脚本笔记】1. 构建基本脚本

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/imilano/article/details/84109744

【shell 脚本笔记】1. 构建基本脚本


最好的教学办法就是结合案例,所以我们结合代码来学习脚本。

  1. 脚本开头要指定使用的bash。一般来说,linux发行版基本都预装bash,所以我们需要在每个脚本开头加上这么一行:

    #!/bin/bash
    
  2. 最简单的shell脚本只需要由一系列Linux命令行组成:

    #!/bin/bash
    
    ls -al | grep *.md
    date
    
  3. 记得在vim中写完脚本后输入:w才能写入到文件。

  4. 可以使用echo命令来简单的显示信息:

    #!/bin/bash
    
    echo "The date is: "
    date
    

    但是如果你想在同一行显示,你需要在echo后加-n参数,这会把当前行跟下一行的信息输出在同一行。

    #!/bin/bash
    
    echo -n "The date is:"
    date
    
  5. 我们也可以在脚本中使用变量。脚本变量分为系统变量和用户变量。我们这样使用系统变量:

    #!/bin/bash
    
    echo "The user information is:"
    echo UID:$UID
    echo HOME:$HOME
    

    如上,只需要在变量名前加$即可。同时你会发现,shell中大写变量和小写变量的高亮色彩是不一样的,一般来说,我们使用大写字母表示系统变量shell变量,而使用小写字母表示我们自己使用的临时变量。就像这样:

    #!/bin/bash
    
    tmpVar="hello "
    
    echo $tmpVar
    echo $USER
    
    

    关于变量,我们还需要知道的是,我们可可以将变量放在双引号中,他会被自动替换,就像这样:

    #!/bin/bash
    
    tmpVar="hello"
    
    echo "$tmpVar world!"
    

    另外,shell是一门动态语言,你无需指定他的类型,他会自动推导其本身的类型。

    还有,最重要的是,引用变量对其进行赋值时不需要使用$,而引用变量值时则需要使用$。就像这样:

    #!/bin/bash
    
    var=10
    tmp=$var
    test=var
    
    echo "var:$var"
    echo "tmp:$tmp"
    echo "test:$test"
    
    
    
  6. 我们还可以使用命令替换,我们从命令输出中提取信息,并将其赋给变量。

     这种命令有两种格式。一是这样 test=\`date\`,二是`test = $(date)`。注意的是,第一种形式中,我们使用`tab`键上面的那个符号来包裹我们的命令:
    
     就像这样:
    
    #!/bin/bash
    
    te=$(ls -al | grep *.sh)
    tes=`ls -al`
    
    echo $te
    echo $tes
    
     > **WARNING**
     >
     > ​	一定要注意的一个问题就是,我们在赋值的时候,**不要在`=`两侧加空格**。
     > 
    
  7. 关于重定向和输出,我们还需要知道的是,我们使用>来重定向输出流,它会覆盖原文件的内容,如果原文件不存在,就创建它。我们使用>>表示在文件末尾追加字符。

    ​ 此外,我们还可以直接在命令行中重定向数据,需要注意的是内联重定向。内联重定向可以任意字母开头,但是必须以同样的字母结尾。

    就像这样:

wc << END
> this
> is
> a
> simple
> test
> END
  1. 在shell里,我们可以这样执行算术运算

    $ expr 1 + 4
    5
    

    WARNING:

    ​ 我们把上述+号左右的空格去掉,你就会发现输出了1+4。这是完全不同的,要注意。

    我们可以在脚本中这样做:

    #!/bin/bash
    
    var1=3
    var2=4
    var3=$(expr $var1 / $var2)
    
    echo "var1 / var2 = $var3"
    

    我们会发现,结果是 0 ,并不是我们期待的 0.75 ,实际上,shell 并不支持浮点数运算,它只能进行整数运算。

    实际上,使用expr这样的形式很不方便,所以我们还有一个改进方案,使用方括号,这是我们推荐的:

    #!/bin/bash
    
    var1=100
    var2=200
    var3=$[$var1 / $var2]
    
  2. 如前所述,我们怎么解决浮点数运算呢?我们可以使用 bc 计算器,就像这样:

    #!/bin/bash
    
    var1=8
    var2=4
    var3=$(echo "scale=4; $var1 / $var2" | bc)
    
    echo $var3
    
  3. 此外,我们还需要知道,脚本的一些状态表示。

    linux 提供一个专门的变量$?来保存上个已执行命令的退出状态。

    一般来说, 一个成功命令的退出状态码为 0 ;如果一个命令结束时有错误,退出状态码就是一个正数值。

    我们可以在shell 中通过exit命令指定退出状态码,就像下面这样:

    #!/bin/bash
    
    eixt 4
    
    

    WARNING

    ​ 退出状态码只能在 0-255 之间。超过这个区间的状态码,shell 会对其进行取余操作。


To be countinued…

猜你喜欢

转载自blog.csdn.net/imilano/article/details/84109744