veritabanı isminde tire ile bash ile veritabanı bırak


-1

Bir komut dosyasında, isimlerinde kısa çizgi bulunan klasör adlarının listesini içeren bir değişken var

DBDIR="some directory"
dbdash=`ls -l $DBDIR | egrep '^d' | grep '.-.' | awk '{print $9}'`

Ve her veritabanını "dbdash" değişkenindeki klasörlerle aynı isimlerle bırakmak istiyorum.

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

Ancak bu hata komut dosyasını çalıştırdıktan sonra ortaya çıktı

mysqladmin: Bilinmeyen komut: 'folder_name varsa veritabanını bırak CHARACTER SET utf8 COLLAT'

Bu veritabanlarını script kullanarak nasıl silebilirim? Lütfen yardım et.

Yanıtlar:


2

Her şeyden önce, karıştırıyorsun mysqladminve düzenli mysql. İlki SQL almaz, sadece özel komutları alır.

İkincisi, çıktısını ayrıştırmayı bırakın ls. Dosya listesini almak için joker karakterleri doğrudan kullanabilirsiniz.

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.