[英]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.