bash 替换中的替换

bash 替换中的替换

我的目标是做

filename=user2.json
userJson=${cat ${filename} | jq}

这显然行不通。


根据这个回答,这应该有效(但事实并非如此):

  filename=user2.json
  eval "userJson=\${cat $filename | jq}"

Error: ${cat user2.json | jq}: bad substitution


cat user2.json | jq自己工作得很好


以下是我尝试过但不起作用的其他组合:

1.

  filename=user2.json
  eval "userJson=\${cat $(filename) | jq}"

Error: ${cat | jq}: bad substitution

2.

  filename=user2.json
  eval "userJson=\${cat '${filename}' | jq}"

Error: ${cat 'user2.json' | jq}: bad substitution

答案1

错误的括号:

filename=user2.json
userJson=$(jq <"$filename")

相关内容