我遇到了bash脚本的问题。我希望用户说明用户名,如果没有设置,请将其自动设置为root。
#!/bin/bash
printf "MySQL User: (root)"
read MYSQLUSER
if [[ "$MYSQLUSER" == "" ]]; then
set MYSQLUSER = "root"
fi
我尝试了各种语法和shell,但if语句总是被忽略。这应该在Mac上运行。谢谢你的帮助!
答案 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
的值。)