複数のファイルがあるとしましょう。
a.sh
b.sh
c.sh
...
z.sh
各ファイルには次の機能があります。
a(){
echo "fooa" | bash
}
今、もしすべての機能を1つのファイルに配置できます。
a(){
echo "fooa" | bash
}
b(){
echo "foob" | bash
}
c(){
echo "fooc" | bash
}
...
z(){
echo "fooz" | bash
}
問題は実際には別のファイルにあることです。私が望むのは、ソース10個または20個のファイルの代わりに1つのファイルを取得できるように動的にファイルに書き込むことです。
これを行う最良の方法は何ですか?
私ができることの1つは、ファイルを繰り返しインポートしたい1つのファイルにその内容を追加することです。他に可能な方法がありますか?
答え1
cat *.sh > all.sh
すべてのファイルを1つにリンクします。すでに存在する場合*.sh
は一致するため、少し不正確ですが、all.sh
ここで実行するall.sh
前にリダイレクトが消去されますcat
。
他のすべてのアイテムをインポートするスクリプトを作成することもできます(呼び出しincludeall.sh
)。
for f in *.sh; do
if [ "$f" != "includeall.sh" ]; then
. "$f"
fi
done
その後、それを取得するために使用します. includeall.sh
。これは、if
自分自身を再度含めることを防ぐために行われます。しかし、..scriptを別のディレクトリに置くのはincludeall
おそらく悪い考えではありません。これにより、ディレクトリ構造がよりきれいになり、誤って誤ったスクリプトを取得するのが難しくなります。この場合。a.sh
z.sh
for f in dir/*.sh; do . "$f"; done