スクリプトを作成する過程で、コマンドの出力をさまざまな方法で、さまざまな程度で使用します。これは、目の前のタスクのトラブルシューティングを行うためです..たとえば、このスニペットでは、アプリケーションのアイコン リソースを読み取り、典型的な .icns 拡張子ではありません...
icns=`defaults read /$application/Contents/Info CFBundleIconFile`
if ! [[ $icns =~ ^(.*)(.icns)$ ]]; then
echo -e $icns "is NOT OK YOU IDIOT! **** You need to add .icns to "$icns"."
else
echo -e $icns "\t Homey, it's cool. That shits got its .icns, proper."
fi
必然的に、各バグが潰され、stdout
実際の機能とデバッグ プロセスに関連する開始点が増えるにつれて、このフィードバックは通常、コメント アウトされるか、沈黙するか、または削除されます。これには明らかな理由があります。
ただし、実行時に「この種の」メッセージの一部またはすべてをオプションで表示するか、またはオプションで表示しないように、ハードコードされているか、パラメーターとして渡された単純なオプションを提供したい場合、その単純な機能を提供する最良の方法は何ですか? 基本的に機能を複製しようとしてset -x
いますが、行ごとのランダウンの代わりに、具体的に設計した通知のみを出力します。
echo
each and everyをif
a をチェックするに置き換えるのは過剰に思えますが、 /スキームを実装するdebug=1|0
方法の簡潔な説明を見つけることができませんでした(どちらが組み込みであるかを思い出せません) など。独自のスクリプト。この小さな式は有望に思えましたが、re: に関するドキュメントはほとんどありません(ただし、これがこのパズルの鍵であると確信しています)。getopts
getopt
2>$1
[ $DBG ] && DEBUG="" || DEBUG='</dev/null'
check_errs() {
# Parameter 1 is the return code Para. 2 is text to display on failure.
if [ "${1}" -ne "0" ]; then
echo "ERROR # ${1} : ${2}"
else
echo "SUCESSS "
fi }
この取引に対する簡潔で再利用可能なトリックは歓迎されます。ボートを完全に見逃している場合、またはそれがヘビであり、噛まれていた場合は、お詫び申し上げます.