我知道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未定义
我能做些什么来强制首先扩展变量,然后执行命令字符串?
答案 0 :(得分:1)
如果声明的变量不在双引号内,则不会展开。所以把你的代码放在双引号而不是单引号中。
myVar="\"reference_data\""
cbType=$(echo "$configuration" | jsawk -a "return _.where(this,{name: $myVar})")