AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
**${parameter:-word}** ### 如果parameter的变量值为空或未赋值,则会**返回word字符串并替代变量的值** ### 用途:如果变量未定义,则返回备用的值,防止变量为空或因未定义导致异常 **${parameter:=word}** ### 用途:基本同上。位置变量和特殊变量不适用 **${parameter:?word}** ### 如果parameter变量值为空或为赋值,那么word字符串将被作为标准错误输出,否则输出变量的值 ### 用途:用于捕捉由于变量未定义而导致的错误,并退出程序 **${parameter:+word}** ### 如果parameter变量值为空或未赋值,则什么都不做,否则word字符串将代替变量的值 示例: ``` tony@z6:~/scripts$ echo $test #$test没赋值 #输出为空 tony@z6:~/scripts$ result=${test:-UNSET} tony@z6:~/scripts$ echo $result UNSET tony@z6:~/scripts$ test=oldboy tony@z6:~/scripts$ result=${test:-UNSET} tony@z6:~/scripts$ echo $result oldboy #test有值的时候 ``` **生产案例** jenkins引用一个脚本,该脚本不严谨,在jenkins上不会有问题,因为所有参数都是固定的,不会少。 但是在服务器上调试的时候,少了一个参数,该脚本有一步删除的步骤,cd到某个目录没有赋值,结果导致删除在脚本目录执行,所有脚本都被删除。因此,所有**涉及到删除的地方都该有个缓冲** 修改后,脚本如下。 ``` PROJECT_DIR=${WORKSPACE:-/tmp} function prepare () { echo "Shell Variables: PROJECT_DIR:$PROJECT_DIR" cd $PROJECT_DIR rm -rf * rm -rf .??* local COMMIT_SHA= if [ $INTERNAL_VERSION_OR_TAG = "latest" ] ; then COMMIT_SHA=$GIT_BRANCH else COMMIT_SHA=$INTERNAL_VERSION_OR_TAG fi git clone $GIT_REPO . echo "try to checkout: $COMMIT_SHA" git checkout $COMMIT_SHA yarn } ```