jq不使用感叹号作为输入

时间:2017-05-15 19:47:11

标签: linux bash shell sh jq

我通过以下方式将用户名和密码传递给jq:

json=$(jq -n --arg u "user_dev" --arg p "user!" '{username: $u, password: $p}')

然而,它失败并提供以下输出:

-bash: !": event not found

似乎不喜欢arg p "user!"

的感叹号

1 个答案:

答案 0 :(得分:3)

shell将其解释为历史扩展。改为使用单引号来防止这种情况发生。

json=$(jq -n --arg u "user_dev" --arg p 'user!' '{username: $u, password: $p}')

尽管如此,bash 4.3包含一个可以防止这种情况发生的修复程序。来自更改日志:

  

1。历史扩展字符(!)不会导致历史记录扩展       然后是双引号字符串中的结束引号。