シェルスクリプトに別のシェルスクリプトを組み込んでその機能にアクセスする方法はありますか?bashシェルスクリプトにファイルを含める方法
PHPのように、単に関数名を呼び出すことによって含まれる関数を実行するには、include
ディレクティブを他のPHPファイルと一緒に使用することができます。
シェルスクリプトに別のシェルスクリプトを組み込んでその機能にアクセスする方法はありますか?bashシェルスクリプトにファイルを含める方法
PHPのように、単に関数名を呼び出すことによって含まれる関数を実行するには、include
ディレクティブを他のPHPファイルと一緒に使用することができます。
は、単にあなたのスクリプト内に置く:
source FILE
それとも
. FILE
それは同じことです。
$ LANG=C help source
source: source filename [arguments]
Execute commands from a file in the current shell.
Read and execute commands from FILENAME in the current shell. The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.
Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.
注意してください。ソースは –
ではありませんが、POSIX準拠ですが、ソースは正確には 'C'言語と同じではありません。ここでsourceは、子スクリプトをメインスクリプトに実行しています。子スクリプトから特定の関数を呼び出すだけならどうでしょうか? –
'を混同しないでください。 script.sh'を '。/ script.sh'で実行します。 –
はい、sourceまたはちょうど.
ある短い形式を使用します。答え以上
. other_script.sh
'.'バージョンは' sh'とBashで動作することに注意してください。 "ソース"はBashでのみ動作します。 –
正しいですが、他のフォルダ内のスクリプトを実行する場合、いくつかの問題があるでしょう。
たとえば、a.sh
とb.sh
は、同じフォルダ内にあり、 aを含むbは. ./b.sh
となります。
xx/xx/xx/a.sh
などのフォルダからスクリプトを実行すると、ファイルb.sh
は見つかりません:./b.sh: No such file or directory
。
私が使用
. $(dirname "$0")/b.sh
[バッシュ?:_best_は他のスクリプトを含める方法]の可能複製(http://stackoverflow.com/questions/192292/bash-how-best-to-include-other -scripts) – Troubadour
@Troubadourは参考に感謝します。投稿が 'source'コマンドを参照しているにもかかわらず、質問自体は' source'ファイルの場所を特定する方法を尋ねています。 – Mechaflash
はい、それでも十分です。あなたが "bash"と "include"(あなた自身の質問のタイトルにある2つの単語)を検索した場合、結果の上にこれを見て、そのような基本的な質問をする必要はありませんでした。 – Troubadour