28

私の問題:

#!/bin/bash

function testFunc(){
    echo "param #1 is :" $1
    echo "param #2 is :" $2
}

param1="param1"
param2="param2"

testFunc $param1 $param2

このようにして、出力は次のようになります。

param #1 is : param1
param #2 is : param2

しかし、param1 を空の文字列に設定すると:

param1=""

出力は次のようになります。

param #1 is : param2
param #2 is :

問題は、最初のパラメーターが空の場合、宣言されていないため、実際には関数パラメーターとして渡されないことだと思います。

それが問題である場合、bashで変数「空の文字列」を宣言する方法はありますか、または期待される動作を得るための回避策はありますか?

注: 次のように関数を呼び出すと、期待どおりに動作します。

testFunct "" $param2

しかし、私はコードをきれいに保ちたいと思っています。

アップデート:

-u最近、バインドされていない変数が使用されようとしている場合にエラーを発生させるフラグを発見しました。

$ bash -u test.sh
param #1 is : param1
test.sh: line 5: $2: unbound variable
4

3 に答える 3

0

本体に bash ファイルを追加set -o nounsetして、同じ効果を得ることができますbash -u

#!/bin/bash
set -o nounset

function testFunc(){
    echo "param #1 is :" $1
    echo "param #2 is :" $2
}

param1="param1"
param2="param2"

testFunc $param1 $param2
于 2020-09-12T03:42:25.237 に答える