データベース内のテーブルのすべてのddlをインポートし、データベース内のすべてのテーブルを単一のファイルにマージするスクリプトを作成しました。
次のデータベースmydatabase
とテーブルがあるとします。mytable
データベース内のすべてのテーブルddlを一時ディレクトリにダンプしました。一時ディレクトリのddlは次のとおりです/home/rahul/temp/mydatabase.mytable.ddl
。データベースの下のすべてのテーブルをダンプしたら、すべてのテーブルddlを次のように1つのファイルにマージしようとします。
cat /home/rahul/temp/mydatabase*ddl >> /home/rahul/final/mydatabase.create
次のエラーが発生します。
cat: /home/rahul/temp/mydatabase*ddl: No such file or directory
どうすれば解決できますか?
答え1
たぶんシェルワイルドカードを消していますかset -f
?
$ ls mydatabase*ddl
mydatabase1.ddl mydatabase2.ddl mydatabase3.ddl
$ set -f
$ ls mydatabase*ddl
ls: cannot access 'mydatabase*ddl': No such file or directory
$ set +f
$ ls mydatabase*ddl
mydatabase1.ddl mydatabase2.ddl mydatabase3.ddl
答え2
cat
ワイルドカードを処理できない場合の*
簡単な方法は次のとおりです。
for file in /home/rahul/temp/mydatabase*ddl; do cat $file >> /home/rahul/final/mydatabase.create; done
入力ファイルと出力ファイルにシェル変数を使用し、より複雑なシェルスクリプトを作成できることを知っていますが、この問題を処理するのに十分です。