在bash call / exec之前扩展变量

时间:2014-10-05 19:53:55

标签: bash

我知道Bash的基础知识,但经常会错过细微差别,而且我在使用它来实现我希望的相当简单的问题时遇到了问题:

如果我在bash脚本中有以下内容,它完全按照我希望的方式运行:

cbType=`echo $configuration | jsawk -a 'return _.where(this,{name: "reference_data"})'`

它需要$configuration - 这是一个JSON字符串 - 并标识数组元素,其中 name 是" reference_data"并仅返回该对象/哈希定义。请注意,这确实使用了非常方便的jsawk实用程序,但它被设计为具有良好的命令行行为。

问题在于,当我删除硬编码的"参考数据"使用变量似乎无法引用变量的范围。例如,......

myVar="\"reference_data\""
cbType=`echo $configuration | jsawk -a 'return _.where(this,{name: $myVar})'`

是否有效,而是返回jsawk错误:

  

jsawk:js错误:ReferenceError:$ myVar未定义

我能做些什么来强制首先扩展变量,然后执行命令字符串?

1 个答案:

答案 0 :(得分:1)

如果声明的变量不在双引号内,则不会展开。所以把你的代码放在双引号而不是单引号中。

myVar="\"reference_data\""
cbType=$(echo "$configuration" | jsawk -a "return _.where(this,{name: $myVar})")