2013-05-27 39 views
1

我不是bash腳本編寫的專家,但我真的不明白這裏的內容。我的腳本是這樣的:將自變量傳遞給bash腳本時出現奇怪的錯誤

#!/usr/bin/env bash 

echo "calling asetup" 
export ATLAS_LOCAL_ROOT_BASE=/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase 
source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh 
asetup 17.6.0,slc5 

echo "Now running..." 
echo "argument [email protected]" 

我爲./myscript -v調用它,輸出爲:

calling asetup 
atlasLocalSetup.sh: invalid option -- 'v' 
'atlasLocalSetup.sh --help' for more information 
./prova.sh: line 12: asetup: command not found 
Now running... 
argument -v 

在第二行,什麼是atlasLocalSetup.sh: invalid option -- 'v'?爲什麼atlasLocalSetup.sh使用-v選項進行調用?

回答

3

源腳本在當前環境中運行,而不更改位置參數的值。對於調用腳本,「$ @」的值與調用腳本的值相同。

您可以使用

set -- 

清除位置參數。如果需要保存,使用

pos_par=("[email protected]") 
set -- 
source script.sh 
set -- "${pos_par[@]}" 
0

好像你是一個-v選項調用腳本文件。請注意,除非位置參數提供給source命令,否則source不會更改命令行參數的值($1)。

相關問題