1

次の間違いを犯しました。空の関数に引数を渡しています。

var1="ok"
var2=$notDefined

func $var1 $var2
func() {
  var1=$1
  var2=$2
  echo $var1
  echo $var2
}

関数の各引数について、私ができること

if [ -z $1 ]; then echo "Empty argument"; fi

しかし、これを行うためのより一般的な方法があるので、簡単に再利用でき、おそらく変数名が空であることを伝えるでしょうか?

4

4 に答える 4

4

でスクリプト全体を停止できますset -u。未設定の変数を使用しようとすると失敗します。これは非常に一般的なアプローチです。

Bash は、次のローカライズされたメッセージを標準エラーに出力します。

bash: x: unbound variable
于 2013-09-20T13:06:52.150 に答える
0

あなたの場合、関数への引数が少なすぎるため、空の変数が作成されます。経由で渡された引数の数を取得できます$#$nより大きな数値で使用するすべての変数はn空にする必要があります。関数の先頭で十分な数の引数をチェックできます。

于 2013-09-20T13:11:19.893 に答える
0
#!/bin/bash

var1="ok"
var2=$notDefined

func() {
        if [[ $# -ge 2 ]];  then
                var1=$1
                var2=$2
                echo $var1
                echo $var2
        else
                echo "Missing values"
        fi
}
func $var1 $var2

走っているのはこちら

./test.sh 
Missing values

ここでは、2 つの値があります。

#!/bin/bash

var1="ok"
var2="dokie"

func() {
    if [[ $# -ge 2 ]];  then
        var1=$1
        var2=$2
        echo $var1
        echo $var2
    else
        echo "Missing values"
    fi
}
func $var1 $var2

結果:

 ./test.sh 
ok
dokie
于 2013-09-20T13:24:54.480 に答える