2015-01-15 93 views
0

我有一個腳本如下:shell腳本 - 運行分配給一個變量返回一個腳本「命令未找到」

var1=some_val1 
var2=some_val2 
var3=some_val3 

varX=another_script.sh ${var1} ${var2} ${var3} 

我收到以下錯誤:

./script.sh: line 5: some_val1: command not found 

如何獲得它運行正常嗎?該腳本基本上採用這些參數並運行Hive查詢。如果我將Hive查詢替換爲another_script.sh blah blah blah,則它可以很好地工作,並且變量會捕獲稍後在腳本中使用的值。我嘗試交換它使其更加抽象,並且我遇到了這個問題。請幫忙。謝謝!

+2

殼正在解釋的線如在'A = B命令ARG1 arg2',的它運行'command'與環境變量'形式存在a'設爲值'b'。因此,在運行'var1'命名的命令時(假設只擴展爲一個字,除非您修復引用後才能保證),則將環境變量'varX'設置爲值another_script.sh'。 –

+0

@CharlesDuffy:+1解釋爲什麼會發生這種情況。謝謝! :) – CodingInCircles

+0

...我的意思是「修復你的引用」是'another_script.sh「$ var1」「$ var2」「$ var3」'將確保'var1','var2'和'var3'每個都只是一個參數傳遞,而你當前的代碼沒有這樣的保證 - 每個變量擴展可以是零個參數或幾個(如果它們包含空白或水平字符)。 –

回答

2

替換

varX=another_script.sh ${var1} ${var2} ${var3} 

通過

varX=$(another_script.sh ${var1} ${var2} ${var3}) 
+0

謝謝!我會嘗試並讓你知道。謝謝:) 編輯:工作就像一個魅力!我現在有其他錯誤,但至少,不是這個! :d – CodingInCircles

相關問題