转载自https://www.jianshu.com/p/4db526ff6560
参数 说明 $0 当前脚本的文件名(间接运行时还包括绝对路径) $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1 $# 传递给脚本或函数的参数个数 $* 传递给脚本或函数的所有参数 $@ $
“会将所有的参数作为一个整体,以”$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
Original: https://www.cnblogs.com/faberbeta/p/16364130.html
Author: 快乐嘉年华
Title: shell中参数的用法 && wait的用法
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/529625/
转载文章受原作者版权保护。转载请注明原作者出处!