Shell脚本检查无输入并设置变量

时间:2015-05-12 14:35:04

标签: bash shell

我遇到了bash脚本的问题。我希望用户说明用户名,如果没有设置,请将其自动设置为root。

#!/bin/bash
printf "MySQL User: (root)"
read MYSQLUSER
if [[ "$MYSQLUSER" == "" ]]; then
    set MYSQLUSER = "root"
fi

我尝试了各种语法和shell,但if语句总是被忽略。这应该在Mac上运行。谢谢你的帮助!

2 个答案:

答案 0 :(得分:3)

只需使用:

your_var=${MYSQLUSER:-root}

${var:-$DEFAULT}表示:如果var未设置或为空,请将表达式计算为$ DEFAULT *

总之,我会将脚本重写为:

#!/bin/bash
printf "MySQL User: (root) "
read MYSQLUSER
MYSQLUSER=${MYSQLUSER:-root}
echo "mysqluser: $MYSQLUSER"

使用不同的行为查看其执行情况:

$ ./a.sh 
MySQL User: (root)              #just pressed intro
mysqluser: root
$ ./a.sh 
MySQL User: (root) hello        #I wrote 'hello'
mysqluser: hello

答案 1 :(得分:0)

一个常见的习语是使用命令

: ${MYSQLUSR:=root}

如果值root尚未具有非空值,则将其分配给MYSQLUSER

:是do-nothing命令;参数被计算,然后被忽略。它是对:=扩展的评估,它实际上设置了MYSQLUSER的值。)