私は現在、すべての関数を含む関数ファイルを、それを使用するいくつかのスクリプトにソースすることでこれを実行しました。
source ./functions.sh
私が気づいた欠点の 1 つは、構文エラーに対して bash が出力する行番号が、元のスクリプトの行番号ではなくなったことです。
答え1
あなたの使い方は妥当です。
あなたの問題を再現できません。バッシュシェル私は (GNU bash バージョン 4.1.2 および GNU bash バージョン 4.3.11) で作業できました。以下を参照してください。
テストスクリプト。実行可能にした後、次のようにgo.sh
実行できます。./go.sh
chmod u+x go.sh
/bin/bash go.sh
echo " ### Here we start ###" Script line 1
source my_sourced_file
echo Script line 3
casfsda # this is the line 4 of script
echo Script line 5
f "Script line #6 using the function from sourced file"
echo " ### Here we finish ###" Script line 7
現在のディレクトリに配置する必要がある関数を含むファイルmy_sourced_file
:
echo Hello word this is the 1 line of my_sourced_file
f(){ echo Hello $1 ;}
f "Gustave line number 3 of my_sourced_file"
echo linea 4 my_sourced_file
出力(黒エラー)
### ここから始めます ### スクリプトの行 1
Hello word これは my_sourced_file の 1 行目です
Hello Gustave my_sourced_file の行番号 3
行目 4 my_sourced_file
スクリプトの行 3
./go.sh: 行 4: casfsda: コマンドが見つかりません
スクリプト行 5
Hello スクリプト行 #6 ソースファイルの関数を使用 ### ここで終了 ### スクリプト行 7
- GNU bash バージョン 4.3.11 でテスト済み
- 古いGNU bashバージョン4.1.2の場合