これら2つのパラメータがbashに設定されているかどうかを確認するには? [閉鎖]

これら2つのパラメータがbashに設定されているかどうかを確認するには? [閉鎖]

実行可能なbashファイルがあるとしましょうscript.sh

次のように使いたいです。

./script.sh p1 p2

p1p2コマンドの2つの必須パラメータ。これらのいずれかが欠落している場合、コマンドは失敗します。

したがって、続行する前に確認する必要がありますscript.sh。すべて設定されているかどうかを確認できますか?

修正する:

私はこれを試しました:

# this is a comment line
if [ -n "$1" ] || [ -n "$2" ]; then
    then echo 'haha'
fi

しかし、以下を得る:

./_scp.sh: line 3: syntax error near unexpected token `then'
./_scp.sh: line 3: `    then echo 'haha''

ベストアンサー1

POSIXシェルで2つのパラメータが設定されていることを確認するには、次の手順を試してください。

if [ "$#" -lt 2 ]; then
  echo >&2 'Need 2 parameter'
  exit 1
fi

null以外の2つのパラメータが必要な場合は、-z代わりに使用する必要があります-n-n長さがゼロでないことをテストし、-z長さがゼロであるかどうかをテストします。

if [ -z "$1" ] || [ -z "$2" ]; then
  echo >&2 'Need 2 parameters which are not empty'
  exit 1
fi

bash(andkshと)を使用すると、zsh次のことができます。

[ -v var ] && echo var was set

変数がvar設定されていることを確認してください。

$ [ -v var ] && echo var was set
$ var=
$ [ -v var ] && echo var was set
var was set

ただし、変数の代わりにという別の種類のパラメータであること$1に注意してください。$2位置パラメータ[ -v 1 ]最初の位置パラメータが設定されていることを確認することはzshorでは有効ですmkshが、bashnorでは無効ですksh93

おすすめ記事