zoukankan      html  css  js  c++  java
  • 结构化命令

      shell按照出现的次序来处理shell脚本中的每个单独命令。

    if-then语句

    if command
    then
        commands
    fi

    bash shell的if语句会运行if行定义的那个命令。如果该命令的退出状态码是0,位于then部分的命令就会被执行。

    如果该命令的退出状态码是其他什么值,那then部分的命令就不会被执行,bash shell会继续执行脚本中的下一个命令。

    #!/bin/bash
    if asdfg
    then
        echo "it did not worked"
    fi
    echo "we are outside of the if statement"

    在then部分,你可以用多个命令。

    #!/bin/bash
    testuser=liuxj
    if grep $testuser /etc/passwd
    #if asdfg
    then
        #echo "it did not worked"
        echo The bash files for user $testuser are:
        ls -a /home/$testuser/.b*
    fi

    if-then-else语句

    if command
    then
        commands
    else
        commands
    fi

    当if语句中的命令返回退出状态码0时,then部分中的命令会被执行,当if语句中的命令返回非零退出状态码时,bash shell会执行else部分中的命令。

    嵌套if

    elif会通过另一个if-then语句来延续else部分:

    if command1
    then
        commands
    elif    command2
    then
        more commands
    fi

    elif语句行提供了另外一个要测试的命令,类似于原始的if语句。如果elif后命令的退出状态码是0,则bash会执行第二个then语句部分的命令。

    注意:你可以将多个elif语句串起来,形成一个大的if-then-elif嵌套组合。

    if command1
    then
        command set 1
    elif command2
    then
        command set 2
    elif command3
    then
        command set 3
    elif command4
    then
        command    set 4
    fi

    test命令

    test命令提供了在if-then语句中测试不同条件的途径。如果test命令中列出的条件成立,test命令就会退出并返回退出状态码0,就会执行then后面的命令。否则if-then语句就会失效。

    if test [condition]
    then
        commands
    fi

    bash shell提供另一种if-then语句中的声明test命令的方法:

    if [condition]
    then
        commands
    fi

    注意:必须在左括号右侧和右括号左侧各加一个空格,否则会报错。

    bash shell能处理的数仅有整数

    gedit test &:打开编辑窗口,可以不关闭就可以调试。

    & 放在启动参数后面表示设置此进程为后台进程

    默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'&'实现这个目的。

    tianfang > run &
        [1] 11319
    tianfang >

    进程切换到后台的时候,我们把它称为job。切换到后台时会输出相关job信息,以前面的输出为[1] 11319例:[1]表示job ID是1,11319表示进程ID是11319。切换到后台的进程,仍然可以用ps命令查看。

    &&

    shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中。当 $? == 0 时,表示执行成功;当 $? == 1 时(我认为是非0的数,返回值在0-255间),表示执行失败。

    有时候,下一条命令依赖前一条命令是否执行成功。如:在成功地执行一条命令之后再执行另一条命令,或者在一条命令执行失败后再执行另一条命令等。shell 提供了 && 和 || 来实现命令执行控制的功能,shell 将根据 && 或 || 前面命令的返回值来控制其后面命令的执行。

    语法格式如下:

    command1 && command2 [&& command3 ...] 
    1 命令之间使用 && 连接,实现 逻辑与的功能。 
    2 只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。 
    3 只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。 --短路的功能
     
    command1 || command2 [|| command3 ...] 
    1 命令之间使用 || 连接,实现 逻辑或的功能。 
    2 只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作。 
    3 只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。 --直到返回真的地方停止执行。
  • 相关阅读:
    BZOJ 2724: [Violet 6]蒲公英
    codeforces Lightsabers (hard)
    BZOJ 3884: 上帝与集合的正确用法
    BZOJ 4809: 皇后
    python的变量类型(Day6)
    Python集合方法整理(Day9)
    基本运算符与流程控制(Day5)
    基本数据类型(Day4)
    第一个Python程序(Day3)
    操作系统(Day2.5)
  • 原文地址:https://www.cnblogs.com/Caden-liu8888/p/6044550.html
Copyright © 2011-2022 走看看