2015-01-15 57 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

相关问题