ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと

SQL文を実行するシェルスクリプトを作っています。
HAIRETSUにSQLファイル名を格納して、forループで実行させているのですが、現在は下記のようにSQLファイル名を横に並べて書いています。

-------------------------------------------
#!/bin/bash
HAIRETSU=( test1.sql test2.sql )

for YOUSO in "${HAIRETSU[@]}" ; do
psql testdb1 -f $YOUSO
done
--------------------------------------------

SQLファイルの数は実際にはもっと多いので、一行につき1ファイルだけ名前を書くようにしたいのです。ヒアドキュメントを使って後述のような方法も試みたのですが、この方法ですと配列が作成されません。

配列を別の処理でも使用したいので、ヒアドキュメントの内容を何とか配列に格納したいのですが、よい方法はないでしょうか?

--------------------------------------------
for LINE in `cat << EOF
test1.sql
test2.sql
EOF`
do
psql testdb1 -f $LINE
done

A 回答 (1件)

#HAIRETSU=( test1.sql test2.sql )


HAIRETSU=( `cat << EOF
test1.sql
test2.sql
EOF `
)

( )の中をヒアドキュメントに置き換えるだけでいけるのでは??

参考URL:http://www.k5.dion.ne.jp/~eudyptes/shellscript.h …
    • good
    • 0
この回答へのお礼

あ・・・これで出来ました。

↓これを試行錯誤で見つけたんだから、ご回答頂いた内容も分かっても良さそうなものなのに・・・申し訳ありません。
----------------------------
for LINE in `cat << EOF
test1.sql
test2.sql
EOF`
-----------------------------

ありがとうございました。

お礼日時:2006/11/26 00:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!