1

ユーザーが2番目の変数を渡したかどうかを確認したいシェル関数があります。私はこれを試しましたが、うまくいかないようです

function dash() {
    if [ -z "$2" ]; then
        open dash://$1:$2;
    else
        open dash://$1;
    fi
}

基本的に、2 番目の引数$2が渡された場合は「X」を実行し、それ以外の場合は「Y」を実行します。

4

4 に答える 4

2

$#渡された引数の数を与える

if [ $# -eq 2 ]
then
  echo "2 arguments passed"
fi
于 2013-09-24T18:40:14.267 に答える
1

「-z」はヌル文字列をテストします。したがって、それを交換するか、「-n」(null ではない) を使用してください。

function dash() {
    if [ -n "$2" ]; then
        open dash://$1:$2;
    else
        open dash://$1;
    fi
}

詳細については、次のサイトが役立ちます。

http://tldp.org/LDP/abs/html/comparison-ops.html

于 2013-09-24T18:46:56.910 に答える
0

機能はこれで修正できます

function dash() {
    if [ "$#" -gt 1 ]; then
        open "dash://$1:$2"
    else
        open "dash://$1"
    fi
}
  • $#引数の数を確認するために使用できます。
  • 可能なスペースを保持するために、あなたの議論を引用してください。

また、関数を呼び出すときは、それも引用します。

dash "first argument" "second argument"

または

dash "first argument"

これを行う場合:

first='first argument'
dash $first

1 つだけではなく、2 つの引数 (最初と引数) があります。

于 2013-09-24T18:45:30.473 に答える