より簡単なバージョン管理のために、各Bash関数を別々のファイルに書き、すべてを私の.bashrc
。
たとえば、より強力な方法はありますか?
. ~/.bash_functions/*.sh
答え1
適切なエラーチェックで囲みます。
fn_dir=~/.bash_functions
if [ -d "$fn_dir" ]; then
for file in "$fn_dir"/*; do
[ -r "$file" ] && . "$file"
done
fi
答え2
一度に複数のファイルをソーシングする場合は、リンクされた出力のリダイレクトを作成して実行できます。たとえば、次のようになります。
source <(cat ~/.bash_functions/*.sh)
強力な部分については、ソースに関係なくエラーチェックを適切に設定する必要があります。たとえば、次のようになります。
source <(cat ~/.bash_functions/*.sh)||echo "ERROR: failed while sourcing $?";exit 1
以下は、ソースファイル自体を確認することができる別のコードスニペットです。
sourced_files=$(source <(cat ~/.bash_functions/*.sh) 2>&1 > /dev/null)
if [ -n "$sourced_files" ]; then
echo "ERROR: nonzero returned"
fi
可能であれば、ソースにエラー検証を追加し、カスタムエラーコードを使用すると、エラーが発生した場所を追跡することができればより良いでしょう。たとえば、次のようになります。
err=0
...
...
# your shell script
...
some-command-i-wanna-check
if [ "$?" -ne 0 ];then
echo "ERROR: my failed description"
err=101
exit $err
fi