bash脚本应用

只愿长相守 提交于 2020-07-28 07:54:06

所有技巧都可以使用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
}




标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!