Bashスクリプトの依存関係を確認する方法/コマンドはありますか?つまり、ユーザーがスクリプトを実行するにはどのライブラリをインストールする必要がありますか?という質問に答えてください。
スクリプトを読み込んで呼び出す他のライブラリ/コマンドを確認することでこれを手動で実行できますが、長いスクリプトではこれは明確ではありません。
答え1
素晴らしいミステリー自動構成システムすでに慣れている
ソフトウェアソースコードパッケージを自動的に構成するシェルスクリプトを生成します。これらのスクリプトは、手動ユーザーの介入なしに広範囲のUNIX様システムにパッケージを適用できます。 Autoconfは、M4マクロ呼び出し形式でパッケージで使用できるオペレーティングシステムの機能を一覧表示するテンプレートファイルからパッケージの構成スクリプトを作成します。
それが十分に怖くない場合は、最初のautoconfスクリプトを作成しようとするのを待ちます。 autoconf 作成者その難しさを恥じないでください。:
Autoconfを理解していない人は、Autoconfを悪く再作成する運命に直面しています。 Autoconfの主な目的は、ユーザーの人生を簡単にすることです。メンテナンス者の生活をより簡単にすることは2番目の目標です。つまり、主な目標は、パッケージマネージャに自動的に設定を作成させることではありません。代わりに、私たちの目標は、すべてのエンドユーザーが自動化されたパッケージの押収構成を簡単に移植可能で予測可能にすることです。この意味で、Autoconfはその目標に非常に成功しています。 Autoconf リストに関するほとんどの苦情は、最終設定の動作ではなく、Autoconf 入力を作成することの難しさに関するものです。
一方、その過程で、あなたは想像していたよりも、さまざまなシステムの複雑さについてもっと学ぶでしょう。
最近、私は別のautoconfスクリプトを書くのではなく、より標準的なDebianスタイルのディストリビューションを作ることが私の目標だと思います。私はこのような選択ができる特権を享受できて幸運です。あなたにはそのような自由がないかもしれません。
答え2
スクリプトが静的に分析できない構成を使用できるため、これは単純な自動化タスクではありません。 orのような接頭辞付きのorを使用したことがある場合は、eval
コマンドを取得してorを介して実行するのと同じタスクを実行するのと同じくらい簡単ではありません。time
nice
egrep -o '^[^ ]+ ? '
which
type
結局のところ、絶対に確信できる唯一の方法は、スクリプトを実行して失敗した理由を見つけることです。スクリプトがうまく書かれている場合は、実行する前に非標準コマンドがあることを確認してください。そうでなければ、試行錯誤を通じて確実に知ることができる唯一の方法です。
もしそうなら、次のようなものが役に立ちます。
#!/bin/bash
egrep -o -e '^[^ ]+ ? ' -e '[a-zA-Z0-9]+' "$1" | sort -u | {
while read line
do
if type $line &>/dev/null
then
echo "$line found"
else
echo "Error: $line not found"
fi
done
} | sort
出力は次のとおりです。
$ ./check i_wonder.sh
cd found
echo found
elif found
else found
Error: abort not found
Error: checkurl not found
Error: cleanup not found
Error: count not found
Error: debug not found
Error: deleteFile not found
Error: die not found
find found
for found
grep found
if found
mv found
readarray found
rm found
shopt found
size found
sleep found
stat found
trap found
unset found
while found
答え3
以下を使用して、フォルダから.shファイルのリストをインポートできます。
find \ordnerpfad -type f
.shファイルからコマンドのリストを取得する方法を見つけたら、次のようにしてシステムがそのコマンドをサポートしていることを確認できます。
compgen -ac | grep searchstr
.shファイルで使用されるコマンドのリストを取得するには、次のいずれかの形式で入手できます。動作しないサンプル:
スクリプトで使用するコマンドのリストを出力します。以下で使用するコマンドのリストを生成できます。
設定 -n file_which_need_to_check.sh > find_commands.txt
または以下を介して:
compgen -c file_which_need_to_check.sh >found_commands.txt
または以下を介して:
shellcheck -x またはこれに似ています:
https://www.shellcheck.net/
https://github.com/koalaman/shellcheck
この点を改善してください。