$0 获取当前执行的脚本文件名
$n 获取当前执行的脚本的第n个参数,n大于10要用大括号,用于传参
$# 获取当前脚本所有后面所接参数的总个数
$* 获取当前脚本所有传参的参数
$@ 获取当前脚本所有传参的参数
$和$@不加双引号时无区别,加双引号时,$""将所有参数视为单个字符串,$"@"将所有字符串视为不同的独立字符串
if [ $# -ne 2 ] #如果传入参数不是2个
then
echo "/bin/sh $0 arg1 arg2" #提示用户脚本路径和用法
exit 1 #退出并返回1
fi
echo $1 $2 #满足2个参数则执行命令
变量 | 用途 |
---|---|
$? | 获取上一个指令的执行状态返回值(0表示成功,非0表示失败,很常用) |
$$ | 获取当前执行的脚本的进程号(PID) |
$! | 获取上一个在后台工作的进程的进程号(PID) |
$_ | 获取在此之前执行的命令或脚本的最后一个参数 |
stop() {
echo -n $"Stopping $prog: "
killproc $prog
RETVAL=$? #将$?的值赋值给变量RETVAL
echo
[ $RETVAL -eq 0 ] && { #判断当返回值为0是,执行下面操作
rm -f /var/lock/subsys/$prog
rm -f /var/run/rpcbind*
}
return $RETVAL
如果返回值不为0,不执行命令,将返回值传递给stop脚本
变量名 | 变量作用说明 |
---|---|
${var:-word} | 如果变量未赋值或为空,则用word值替代 |
${var:=word} | 如果变量未赋值或为空,则用word值赋值并替代 |
${var:+word} | 如果变量已赋值或为不为空,则用word值替代 |
${var:?word}} | 如果变量未赋值或为空,则用word值作为错误输出 |
冒号非必须,省略冒号,则只针对未赋值的变量,加上冒号,就包括为空的变量
echo 'echo ${var:-ttt}-->' ${var:-ttt}
echo 'echo $var-->' $var
echo 'echo ${var:=ttt}-->' ${var:=ttt}
echo 'echo $var-->' $var
echo 'echo ${var:+MMM}-->' ${var:+MMM}
echo 'echo $var-->' $var
echo 'unset var and echo ${var:?the error}-->'
unset var
echo ${var:?the error}
echo ${var:-ttt}--> ttt
echo $var-->
#变量未赋值,则用ttt代替输出,查看变量仍然未赋值
echo ${var:=ttt}--> ttt
echo $var--> ttt
#变量未赋值,则用ttt代替输出,查看变量已被赋值
echo ${var:+MMM}--> MMM
echo $var--> ttt
#变量已赋值,则用MMM代替输出,查看变量仍然为ttt
unset var and echo ${var:?the error}-->
/server/scripts/t2.sh: line 9: var: the error
#变量未赋值则输出定义的报警信息
在企业中,针对目录路径等的处理就可以上述变量不存在则赋值的方式,防止因目录路径不存在而导致的异常,特别是针对变量的删除操作,这种方式很有用,否则删除的变量不存在时,可能 导致未知的危险
find ${path:-/tmp} -name "*.tar.gz" -type f -mtime +7|xargs rm -f
如上命令,当路径变量不存在时,用/tmp路径代替
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。