0

私はRegExとBASHのどちらにもあまり流暢ではないので、このようにして学ぶことができるように、詳細な説明をいただければ幸いです。ありがとう。

私はこのファイルを大幅に鈍らせましたが、基本的に私がやりたいのは、配列$sqldatabasesを取り、どの変数に@記号が含まれているかを確認し、その特定の変数を更新して@記号を含まないようにし、最後mysqldumpにそのデータベースに対してを実行することです。基本的に、現在コードで発生しているのは、ifステートメントフィルタリングforum@の欠如です。

source config.sh
sqldatabases=(bans forum@ users donators)
for (( sqlcount = 0; sqlcount < ${#sqldatabases[@]}; sqlcount++ ))
    do
        if [[ "$sqldatabases[sqlcount]" =~ *[@]* ]] ; then
            sqldatabases[sqlcount]=${sqldatabases[sqlcount]//[@]/}
            echo "$sqldatabases[sqlcount]"
            mysqldump -u"$sqluser" -p"$sqlpass" -h"$sqlhost" ${sqldatabases[sqlcount]} > .backups/$timedate/MySQL/${sqldatabases[sqlcount]}.sql;
        fi
    done

改めてご協力いただきありがとうございます。それぞれの変更について詳しく説明してください。

4

2 に答える 2

1

実際には、@を削除するためのループは必要ありません。

sqldatabases=(bans forum@ users donators)
sqldatabases=(${sqldatabases[@]/@/})
echo ${sqldatabases[*]}
于 2013-03-21T06:18:22.227 に答える
1

${array[index]}構文を使用する必要があります。そして、あなたは(または代わりに使用する)*と一致するためにsを必要としません:@.*@.*

if [[ "${sqldatabases[sqlcount]}" =~ @ ]] ; then
            sqldatabases[sqlcount]=${sqldatabases[sqlcount]//[@]/}
            echo "${sqldatabases[sqlcount]}"
            mysqldump # ...
fi
于 2013-03-21T06:21:13.143 に答える