我在脚本中有一个变量,其中包含名称中带有破折号的文件夹名称列表
DBDIR="some directory"
dbdash=`ls -l $DBDIR | egrep '^d' | grep '.-.' | awk '{print $9}'`
我想删除变量“dbdash”中所有与文件夹同名的数据库
dbhype=($dbdash)
for dbtry in ${!dbhype[*]}
do
mysqladmin -u$dbUser -p$dbPass 'drop database if exists `'${dbhype[$dbtry]}'` CHARACTER SET utf8 COLLATE utf8_general_ci;'
done
但是运行脚本后出现了这个错误
mysqladmin:未知命令:‘如果存在 folder_name CHARACTER SET utf8 COLLAT,则删除数据库’
如何使用脚本删除这些数据库?请帮忙。
答案1
首先,您混淆了mysqladmin
和常规的mysql
。前者不使用 SQL,只使用特定的自定义命令。
其次,停止解析 的输出ls
。您可以直接使用通配符来获取文件列表。
DBDIR="some directory"
for db_dir in "$DBDIR"/*-*/; do
db_name=$(basename "$db_dir")
# The other way:
# db_name=${db_dir%/}; db_name=${db_dir##*/}
echo "Dropping '$db_name'..."
mysql -u"$user" -p"$pass" "drop database if exists $db_name;"
# The other way:
# mysqladmin -u"$user" -p"$pass" drop "$db_name"
done