[英]Bash - problem with using unset variable in a script
我有以下代码:
VAR1=""
ANOTHER_VAR="$VAR1/path/to/file"
ANOTHER_VAR_2="$VAR1/path/to/another/file"
...
# getopts which reads params from command line and sets the VAR1
问题在于,在设置ANOTHER_VARs
后设置VAR1
会使它们的路径没有VAR1
部分。 我不能将getopts
移到那些之上,因为脚本很长,并且有很多方法取决于变量和其他方法。 任何想法如何解决这个问题?
我要把ANOTHER_VAR和ANOTHER_VAR_2变成函数。 返回值取决于VAR1的当前值。
ANOTHER_VAR () { echo "$VAR1/path/to/file"; }
ANOTHER_VAR_2 () { echo "$VAR1/path/to/another/file"; }
然后,您将使用$(ANOTHER_VAR)
而不是$ANOTHER_VAR
是否可以在调用getopts
下面设置ANOTHER_VAR和ANOTHER_VAR_2变量? 另外,如何在getopts之后调用的函数中设置ANOTHER_VAR和ANOTHER_VAR_2?
foobar(){
do something
return
}
foobar()
在设置ANOTHER_VAR之前,不能使用“取决于变量的许多方法”,因此您只需将定义移至getopts
循环之后即可。
Shell脚本的一个优点是,在定义使用它们的函数之前不必定义变量。 仅在使用功能时定义变量。 (也就是说,这样做并不是很不错的样式,但是会使您陷入困境。您还应该能够将getopts
循环移到函数上方,这样会更好。您可以在您无法通过“我不能将getopts
移到那些之上之前”进行很多解释。)
因此,您的修复是(按优先顺序):
getopts
循环。 getopts
循环之后和调用任何依赖它们的函数之前,将设置ANOTHER_VAR和ANOTHER_VAR_2的两行移动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.