所有技巧都可以使用man bash获得:
搜索":-"
${parameter:-word}
使用(USE)默认值:
变量parameter的值如果未设置或为空,则使用word,但是word并不实际赋值给变量。
${parameter:=word}
赋予(Assign)默认值:
变量parameter的值如果未设置或为空,则将word实际赋予整个变量。
${parameter:?word}
显示错误信息:
变量parameter的值如果未设置或为空,则将会错误信息输出到标准输出。
${parameter:+word}
使用替换(Alternate)值:
当parameter的值实际为空时,则word不做任何替换。
当parameter的值实际不为空时,则word会替换原有值。
# DOC=""
# echo $DOC
空
# echo ${DOC:-caduke}
caduke
# echo $DOC
空
# echo ${DOC:=caduke}
caduke
# echo $DOC
caduke
搜索"##"或"%%"时:字符串截取命令
${parameter#word}
从左向右以"word"为分割符进行匹配,然后只去掉第一次被word匹配的左侧内容,包含word
${parameter##*word}
用于截取命令的基名:相当于basename /path/to/cmd
从左向右以word为分隔符进行匹配,这里加上"*",表示去掉全部被word匹配的左侧内容,
${parameter%word*}
用于截取命令的目录路径:相当于dirname /path/to/cmd
从右向左以"word"为分隔符进行匹配,然后只去掉第一次被word匹配的右侧内容,包含word
${parameter%%word*}
从右向左以"word"为分隔符进行匹配,然后去掉全部被word匹配的右侧内容,包含word
# which named
/usr/sbin/named
# CMD=/usr/sbin/named
# echo ${CMD##*/}
named
# basename $CMD
named
# echo ${CMD%/*}
/usr/sbin
# dirname $CMD
/usr/sbin
跳出while、until、for循环的中断:
continue:结束本轮循环提前进入下一轮,但是并不退出循环。
break :直接跳出循环
exit # :直接跳出脚本,并给与数字"#"的返回执行状态码
跳出函数:
return #:表示直接中止整个函数,并返回执行状态码,但默认并不显示
/etc/rc.d/init.d/functions中定义的函数:(可以直接引用)
daemon:用于启动一个服务,后面跟上"--pidfile"表示指定服务启动后的daemon创建的pid文件位置
用法:daemon - -pidfile /PATH/TO/PIDFILE /PATH/TO/SERVICE_NAME
passed、success、failure表示服务启动后的成功与否的提示
start() {
gendsskey
genrsakey
if [ -f $lockfile ]; then
echo -n "dropbear is already running."执行后不换行
failure直接显示带颜色的[ failed ]
echo 这里再换行
exit 7
fi
echo -n "Start dropbear"
daemon --pidfile $pidfile $dropbear -p $port
RETVAL=$? 启动dropbear服务并创建其pid文件
echo
if [ $RETVAL -eq 0 ];then
touch $lockfile创建锁文件
return 0
else
rm -f $lockfile $pidfile
return 1 跳出这个函数
fi
}
来源:oschina
链接:https://my.oschina.net/u/4356644/blog/4317712