我有一个bash sourcedbash.sh 来自另一个bash主代码 main.sh 。
使用“ set -u ”选项运行 main.sh ,我收到的错误比我无法弄清楚:
Error /sourced_bash.sh : line xx : variable without link
main.sh
. sourced_bash.sh
my_function $foomain 1
sourcedbash.sh
function my_function(){
local foo=$1
local bar=$2
if [[ 1 -eq $bar ]];then # <= this is LINE xx generating the error
# ... dothis
return 1
elif [[ 0 -eq $bar ]];then
# ... dothat
return 0
fi
}
查看手册页并阅读“我的朋友”,但没有取得圆满成功。
我需要理解为什么“ set -u ”意味着 main.sh 程序吸收以及如何摆脱这个错误(Debian Lenny)。
提前谢谢
答案 0 :(得分:2)
由于您正在进行字符串比较,因此需要使用引号和==。尝试更改为:
if [[ "1" == "$bar" ]] || [[ "true" == "$bar" ]];then
<强>更新强>
什么是$foomain
?它已经确定了吗?
set -u
让Bash检查您是否已初始化所有变量。如果还没有,Bash将抛出有关未绑定变量的错误。