【发布时间】:2013-10-22 23:41:53
【问题描述】:
我的问题:
#!/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
【问题讨论】:
-
清洁不应覆盖正确性。
-
所以你更喜欢保持正确的混乱状态,而不是寻找干净正确的解决方案?
-
如果代码不正确,谁在乎它是否干净?不引用参数扩展,因为您认为它看起来更干净是不正确的。
-
再次阅读我的问题:D 我的问题是,我必须在没有参数名称的情况下调用我的函数才能使其工作。所以我搜索了一个可以保留参数名称的解决方案。一个干净且正确的解决方案。
标签: bash parameter-passing string