My problem:
#!/bin/bash
function testFunc(){
echo "param #1 is :" $1
echo "param #2 is :" $2
}
param1="param1"
param2="param2"
testFunc $param1 $param2
This way the output is:
param #1 is : param1
param #2 is : param2
But when I set param1 to empty string:
param1=""
Then the output is the following:
param #1 is : param2
param #2 is :
I guess the problem is that when the first parameter is empty, it's not declared, so it actually doesn't get passed as a function parameter.
If that is the problem, then is there a way to declare a variable "empty string" in bash, or is there any workaround to get the expected behavior?
Note: It works as expected if I call the function like this:
testFunct "" $param2
But I want to keep the code clean.
UPDATE:
I recently discovered the -u
flag which raises an error in case an unbound variable is about to be used.
$ bash -u test.sh
param #1 is : param1
test.sh: line 5: $2: unbound variable
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…