• Linux&shell之Shell脚本


    写在前面:案例、常用、归类、解释说明。(By Jim)

    使用多条命令
    shell脚本的关键是可以输入多条命令,甚至可以将一条命令的结果传递给另一条命令。
    date;who(两个命令shell脚本的写法)

    创建shell脚本
    1.将shell命令放置到一个文本文件中
    2.指明所使用的shell,比如#!/bin/bash
    3.可以用#注释,但是一般注释不会被读取,第一行除外
    案例
    #!/bin/bash
    #This script displays the date and who's logged on
    date
    who
    4.保存为test1
    5.将shell脚本文件所在的目录添加到PATH环境变量中(
    a.修改~/.bash_profile
    PATH=$PATH:$HOME/bin:/home/jiqing9006/shellscript
    export PATH
    b.执行source ~/.bash_profile)
    6.在命令行提示符中使用文件的绝对路径或相对路径来引用该shell脚本

    显示消息
    echo Let's see if this'll work(输出字符串,如果有单引号最好将整个字符串包在“”当中,否则单引号可能不会被输出。)
    echo -n "The time and date are:"
    date(-n让字符串与执行结果显示在一行中)

    使用变量
    变量允许在shell脚本中暂存信息,以便与脚本中其他命令一起使用。
    #!/bin/bash
    #display user information from the system.
    echo "User info for userid:$USER"
    echo UID: $UID
    echo HOME: $HOME
    echo PATH: $PATH
    (脚本中有一些变量的使用)
    如果想显示$符,可以加,如下所示
    echo "The cost of the item is $15"

    用户变量
    #!/bin/bash
    # testing variables
    days=10
    guest="Jiqing"
    echo "$guest checked in $days days ago"
    days=5
    guest="Jessica"
    echo "$guest checked in $days days ago"
    (定义用户自己的变量days,guest。这一点跟php有点相近)
    #!/bin/bash
    # assigning a variable value to another variable
    value1=10
    value2=$value1
    echo The result value is $value2
    (用变量给变量赋值)

    反引号``
    反引号允许将shell命令的输出赋值给变量。必须将整个命令行命令用反引号包围起来。
    testing=`date`(注意不是单引号,是~下面的那么符号)
    #using the backtick character
    testing=`date`
    echo "The date and time are:" $testing

    #!/bin/bash
    #using the backtick character
    today=`date +%y%m%d`
    ls /usr/bin -al > log.$today(将ls /usr/bin -al 查询出来的结果写到log.$today文件中,执行完之后会发现新增一个log文件,里面都是查询出来的内容)

    重定向输入输出
    有时候想通过命令保存输出,而不是只在显示器显示输出。
    输出重定向
    date >test6(将date指令查询的结果保存到文件test6中)
    date >>test6(将信息追加到test6文件中)

    输入重定向(与输出相反的动作)
    wc <test6(将文本文件的内容重定向到wc命令下,供wc统计使用)

    管道
    有时候需要将一个命令的输出发送到另一个命令的输入。
    rpm -qa(列出所有被安装的rpm package )
    |
    将一个命令的输出发送到另一个命令的输入。
    rpm -qa >rpm.list
    sort rpm.list
    (等价于rpm -qa|sort)
    亦可以将重定向技术与管道结合使用
    rpm -qa |sort >rpmlist

    数学计算
    a.expr命令
    expr 1 + 2(注意要用空格,吓死我了,以为不能用来着)
    expr 5 * 2(使用乘法需要加反斜杠)
    #!/bin/bash
    #An example of using the expr command
    var1=10
    var2=20
    var3=`expr $var2 / $var1`
    echo "The value of var3 is:"$var3
    (定义两个变量,用expr计算结果,保存到var3中,输出结果)
    b.使用括号$[]
    echo $[1+2](输出3)
    #!/bin/bash
    var1=100
    var2=50
    var3=45
    var4=$[$var1*($var2-$var3)]
    echo The final result is $var4
    (括号让数学计算更加简便了,结果为500)
    c.浮点解决方案
    bash计算器实际上是一种编程语言,该语言允许在命令行中输入浮点表达式,然后解释表达式并计算它们,最后返回结果。
    输入bc进入指令模式
    输入quit退出指令模式
    在脚本中使用bc
    #!/bin/bash
    var1=`echo " scale=4;3.44/5"|bc`
    echo The answer is $var1
    (将指令的结果保存给变量var1,指令中用了管道技术,输出指令给bc,bc执行之后返回结果)
    来看更多的例子
    #!/bin/bash
    var1=100
    var2=45
    var3=`echo " scale=4;$var1/$var2"|bc`
    echo The answer for this is $var3
    (结果为2.2222)

    #!/bin/bash
    var1=20
    var2=3.14159
    var3=`echo " scale=4;$var1*$var1"|bc`
    var4=`echo " scale=4;$var3*$var2"|bc`
    echo The answer is $var4
    (计算圆的面积)
    还可以用EOF来计算,更加的方便,清晰
    #!/bin/bash
    var1=10.46
    var2=43.67
    var3=33.2
    var4=71

    var5=`bc<<EOF
    scale = 4
    al = ($var1*$var2)
    b1 = ($var3*$var4)
    a1+b1
    EOF
    `
    echo The answer is $var5

    退出脚本
    $?保存最后一条命令执行结束的退出状态。
    一条命令成功完成的退出状态是0。如果命令执行错误,那么退出状态就会是一个正整数。
    0 完成
    1 未知错误
    2 误用shell
    126 命令无法执行
    127 没有找到命令
    ..
    exit命令允许在脚本结束时,指定一个退出状态。

  • 相关阅读:
    SharePoint 2013 中的SQL Server 安全
    SharePoint 2013 的HTML5特性之响应式布局
    SharePoint 2013 一些小技巧
    SharePoint 2013 排错之"Code blocks are not allowed in this file"
    SharePoint 2013 创建搜索中心及搜索设置
    SharePoint 2013 使用PowerShell创建State Service
    SharePoint 2013 内容部署功能简介
    SharePoint 使用PowerShell恢复误删的网站集
    SharePoint 自定义WebPart之间的连接
    linux之misc及使用misc创建字符设备
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/3196070.html
Copyright © 2020-2023  润新知