我通过以下方式将用户名和密码传递给jq:
json=$(jq -n --arg u "user_dev" --arg p "user!" '{username: $u, password: $p}')
然而,它失败并提供以下输出:
-bash: !": event not found
似乎不喜欢arg p "user!"
答案 0 :(得分:3)
shell将其解释为历史扩展。改为使用单引号来防止这种情况发生。
json=$(jq -n --arg u "user_dev" --arg p 'user!' '{username: $u, password: $p}')
尽管如此,bash
4.3包含一个可以防止这种情况发生的修复程序。来自更改日志:
1。历史扩展字符(!)不会导致历史记录扩展 然后是双引号字符串中的结束引号。