実行可能なbashファイルがあるとしましょうscript.sh
。
次のように使いたいです。
./script.sh p1 p2
p1
とp2
コマンドの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 ]
最初の位置パラメータが設定されていることを確認することはzsh
orでは有効ですmksh
が、bash
norでは無効ですksh93
。