• shell中参数的用法 && wait的用法


    转载自https://www.jianshu.com/p/4db526ff6560

    参数 说明
    $0 当前脚本的文件名(间接运行时还包括绝对路径)
    $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1
    $# 传递给脚本或函数的参数个数
    $* 传递给脚本或函数的所有参数
    $@ $和 $@ 都表示传递给函数或脚本的所有参数,不被双引号 ("") 包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。但是当它们被双引号 ("") 包含时,"$"会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@"会将各个参数分开,以"$1""$2" … "$n"的形式输出所有参数。
    $? 上个命令的退出状态,或函数的返回值
    $$ 当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID
    $_ 上一个命令的最后一个参数
    $! 后台运行的最后一个进程的 ID 号
    #!/bin/bash
    echo $0    # 当前脚本的文件名(间接运行时还包括绝对路径)。
    echo $n    # 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1 。
    echo $#    # 传递给脚本或函数的参数个数。
    echo $*    # 传递给脚本或函数的所有参数。
    echo $@    # 传递给脚本或函数的所有参数。被双引号 (" ") 包含时,与 $* 不同,下面将会讲到。
    echo $?    # 上个命令的退出状态,或函数的返回值。
    echo $$    # 当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID。
    echo $_    # 上一个命令的最后一个参数
    echo $!    # 后台运行的最后一个进程的 ID 号
    

    拿$!举个例子:

    #!/bin/bash
    set -x
    set -e
    
    sleep 10s &
    pid1="$!"
    sleep 5s &
    pid2="$!"
    
     wait ${pid1}
     res1="$?"
    
    wait ${pid2}
     res2="$?"
    
    if [[ ${res1} -eq 0 && ${res2} -eq 0 ]];then
      echo "success"
    fi
    
    

    输出为:

    + set -e
    + pid1=27717
    + sleep 10s
    + pid2=27718
    + wait 27717
    + sleep 5s
    + res1=0
    + wait 27718
    + res2=0
    + [[ 0 -eq 0 ]]
    + [[ 0 -eq 0 ]]
    + echo success
    success
    
    

    Bash shell内置了wait命令,wait命令可以使当前shell进程挂起,等待所指定的由当前shell产生的子进程退出后,wait命令才返回。wait命令的参数可以是进程ID或是job specification。
    wait命令一个很重要用途就是在Bash shell的并行编程中,可以在Bash shell脚本中启动多个后台进程(使用&),然后调用wait命令,等待所有后台进程都运行完毕,Bash shell脚本再继续向下执行。像下面这样:

    command1 &
    command2 &
    wait
    
  • 相关阅读:
    npm ERR! code EINTEGRITY npm! ERR! shal-
    Python 的类的下划线命名有什么不同?
    Linux下通过源码编译安装程序
    Mac OSX下Sublime Text配置使用Ctags实现代码跳转
    Python基础-*args和**kwargs魔法变量
    alpha版、beta版、rc版的意思
    英特尔第四代酷睿处理器数字和字母代表什么意思
    笔记本CPU低压和标压有什么区别?
    MySQL通过localhost无法连接数据库的解决
    sudo:无法解析主机 解决方案
  • 原文地址:https://www.cnblogs.com/faberbeta/p/16364130.html
Copyright © 2020-2023  润新知