gpt4 book ai didi

bash - 在 bash 中传递空变量

转载 作者:行者123 更新时间:2023-11-29 08:45:17 24 4
gpt4 key购买 nike

我的问题:

#!/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 标志,它会在即将使用未绑定(bind)变量的情况下引发错误。

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

最佳答案

在第一种情况下,您使用 testFunct param2 调用脚本。因此,它将 param2 理解为第一个参数。

总是建议在引号内传递参数以避免这种情况(老实说,对我来说,这种方式更干净)。所以你可以调用它

testFunct "$param1" "$param2"

所以要传递一个空变量,你说:

testFunct "" "$param2"

看一个例子:

鉴于此功能:

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

让我们用不同的方式来调用它:

$ testFunc "" "hello"    # first parameter is empty
param #1 is ->
param #2 is -> hello

$ testFunc "hey" "hello"
param #1 is -> hey
param #2 is -> hello

关于bash - 在 bash 中传递空变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19376648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com