繁体   English   中英

Bash-在脚本中使用unset变量的问题

[英]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移到那些之上之前”进行很多解释。)

因此,您的修复是(按优先顺序):

  1. 移动getopts循环。
  2. getopts循环之后和调用任何依赖它们的函数之前,将设置ANOTHER_VAR和ANOTHER_VAR_2的两行移动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM