スクリプトにいくつかのテスト実行オプションを追加する

スクリプトにいくつかのテスト実行オプションを追加する

パラメータを受け入れて設定されていない場合は、デフォルト値を使用するスクリプトがあります。

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"

おすすめ記事