如何扩展变量,运行该命令并将输出存储到变量?
通常你这样做
var="$(echo string)"
但我想要这个
envString='echo $stringToEcho'
stringToEcho="hello world"
var="$(${envString})"`
但里面的美元符号并没有扩大。我需要运行存储在变量中的命令并将输出存储到另一个变量。
答案 0 :(得分:2)
如果您的字符串包含写为eval
的内容 - 安全:
envString="echo string"
var=$(eval "$envString")
...即使包含变量引用也会有效,如果引用正确:
envString='echo "$someVar"' # use single-quotes here to avoid premature expansion!
someVar='hello world'
var=$(eval "$envString")
但是,如果您的字符串包含通过扩展变量而不使用printf %q
来安全地转义所包含的任何变量而生成的内容,不执行此操作。
参考文献: