これには多くのコードは表示されませんが、修正要求があります。私たちのファイルには、本番のさまざまなシェルスクリプトで使用される100以上の関数が含まれています。我々はそれを命名した。
functions.sh
これまで、各スクリプトは更新された機能にアクセスできるようにその中にある "functions.sh"ファイルを呼び出します。このように
#!/bin/bash
# comment
# comment
# Comment
./path/function.sh
echo "Date" > logging()
..
これで、この通話をキャンセルするように求められます。
./path/function.sh
今後開発されるスクリプトから。 (より多くのファイルを追加できるように)新しい「functions.sh」が本番環境に展開されたら、環境で最新の機能が自動的に更新され、すべてのスクリプトがここで定義されている機能を直接使用できることを確認してください。 .bashrc ファイルから呼び出すことができます。
~/.functions.sh
それとも私たちがしなければならない他のことはありますか?スクリプトはcrontabを介して非対話型モードで実行されることに注意してください。 (全てのスクリプトはbashスクリプトです。) どんな助けでもくれてありがとう。
ありがとう
答え1
読むhttps://www.gnu.org/software/bash/manual/bash.html#Bash-Startup-Files
非対話型シェル(cronを介してスクリプトを実行するなど)の場合、bashはBASH_ENV
環境変数をソースファイル名として使用します。
したがって、柔軟性を最大化するには、次のようにします。
/some/path
├── functions.d
│ ├── func1.sh
│ ├── func2.sh
│ ├── ...
│ └── funcN.sh
└── functions.sh
そしてfunctions.sh
おそらく
#!/usr/bin/env bash
func_dir="${BASH_SOURCE[0]%/*}/functions.d"
if [[ -d "$func_dir" ]]; then
for f in "$func_dir"/*.sh; do
if [[ -r "$f" ]]; then
. "$f"
fi
done
fi
crontabファイルに以下を追加します。
BASH_ENV=/some/path/functions.sh
したがって、ユーザーがする必要があるのは、そのディレクトリに.shファイルを追加することだけです。これにより、cronスクリプトはそのファイルを選択します。
これは、それぞれ1つの関数定義のみを含むファイルを生成できる柔軟性を提供します。もう巨大なライブラリファイルはありません。