-1

У меня в скрипте есть переменная со списком имен папок с тире в их именах

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: неизвестная команда: 'удалить базу данных, если существует имя_папки CHARACTER SET utf8 COLLAT'

Как я могу удалить эти базы данных, используя скрипт? Пожалуйста помоги.

1 ответ1

2

Прежде всего, вы смешиваете 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .