zoukankan      html  css  js  c++  java
  • 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命令允许在脚本结束时,指定一个退出状态。

  • 相关阅读:
    Unity多线程(Thread)和主线程(MainThread)交互使用类——Loom工具分享
    一种Unity2D多分辨率屏幕适配方案
    Unity 2D骨骼动画2:创建真实动画
    Unity2d 骨骼动画1:介绍
    Unity2d 骨骼动画3:介绍Mecanim和脚本
    Unity2D研究院之自动生成动画、AnimationController、Prefab(一)
    mongochef如何链接有权限的mongodb3.x数据库
    moogodb3.x总结
    mongodb3.x用户角色
    MongoDB 基础 -安全性-(权限操作)
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/3196070.html
Copyright © 2011-2022 走看看