我正在使用bash脚本检查mysql用户是否存在,并使用以下命令:
checkuser=`mysql -u $mysqlroot -p$rootpw -e "SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = '$user_name') ;"`
lastchr=${checkuser#${checkuser%?}}
if [ $lastchr == 1 ] ; then
clear
echo "ERROR: mysql user exists"
fi
我的问题是,终端总是给我以下反馈:
/etc/hosting: line 775: syntax error near unexpected token `('
/etc/hosting: line 775: `checkuser=`mysql -u $mysqlroot -p$rootpw -e "SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = '$user_name') ;"`'
我试图逃避"("和")",但我没有取得成功。
我做错了什么?我尝试了所有不同类型的转义,单引号,......它没有帮助。
亲切的问候
编辑: 因为可能需要,前一行:
echo "creating mysql user ..."
echo ""
read -p "enter username: " user_name
if [[ -z "$user_name" ]] ; then
clear
echo "username mustn't be empty!"
create_mysql_user # calls function again
fi
# check username length
if [ ${#my_user} -gt 16 ] ; then
clear
echo "ERROR: the username mustn't be longer than 16 characters"
create_mysql_user
fi
答案 0 :(得分:0)
这是一个老问题,但仍然可以在互联网上搜索。我想回答它,因为它没有正确的答案。
要使用bash检查mysql用户是否存在,您可以使用以下包jq将查询结果转换为可读输出为数组格式的用户列表:
# Get list of all sql users
sql_users=$(mysql -e "SELECT USER FROM mysql.user;" | jq -rR .)
check_sql_user=$(echo "${sql_users}" | grep "username_to_check")
if [[ -z "${check_sql_user}" ]]; then
echo "No user found"
# Call create user here
else
echo "User found"
fi