パラメータを受け入れて設定されていない場合は、デフォルト値を使用するスクリプトがあります。
VALUE=$1
if [[ -z "$VALUE" ]];
VALUE=foo #some function returns the default
fi
その後、スクリプトは引き続き操作を実行します。
私はそれを「強化」し、いくつかのオプションを提供したいと思いますdry run
。したがって、合格すると、次のような結果が得られます。
if [[ -z "$DRY" ]];
echo "command x y z"
else
command "x" "y" "z"
fi
どうすればいいですか?
答え1
適切なコマンドライン解析を実行し、実際の練習の実行方法を選択します。
コマンドラインの解析:
#!/bin/sh
dry_run=false
while getopts 'n' opt; do
case "$opt" in
n) dry_run=true ;;
*) echo 'error in command line parsing' >&2
exit 1
esac
done
これで、ユーザーがコマンドラインオプションを使用してスクリプトを呼び出す$dry_run
場合があります。true
-n
次に、練習を実行する方法を選択します。簡単な方法は使用set -v
(シェルから読み取ったコマンドを表示)してから使用set -n
(実際に実行せず)することです。何もない):
if "$dry_run"; then
set -v
set -n
fi
ただし、これはスクリプトのみを表示するので、望むものではないかもしれません。
代わりに、以下を選択できます。
if "$dry_run"; then
cmd=echo
else
cmd=''
fi
次に、テストを実行したい特定のコマンドの前に以下を付けます$cmd
。
$cmd ls -l
$cmd echo "hello world"