想要在bash脚本中解析JSON,但得到;python:无法执行二进制文件";错误

想要在bash脚本中解析JSON,但得到;python:无法执行二进制文件";错误,json,python-3.x,bash,parsing,Json,Python 3.x,Bash,Parsing,我正在尝试编写一个shell脚本,在其中解析一些JSON。具体来说,我想提取一个“id”元素的值。我有以下内容(我的系统上安装了Python 3) 然而,上述结果导致 /opt/scripts/sync_script.sh: line 36: /usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/python: cannot execute binary file 在“python”行上(从未打印$use

我正在尝试编写一个shell脚本,在其中解析一些JSON。具体来说,我想提取一个“id”元素的值。我有以下内容(我的系统上安装了Python 3)

然而,上述结果导致

/opt/scripts/sync_script.sh: line 36: /usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/python: cannot execute binary file
在“python”行上(从未打印$user_id变量)。我还需要做什么才能让它工作?当$user_json打印出来时,我可以清楚地看到“id”值

{"id":"4b8d53a5-d0b5-4175-82ec-8aeda435ba62","first_name":"ddd"}
编辑:作为对注释的响应,我在尝试查看Python版本时遇到以下错误。权限也包括在内

localhost:tmp davea$ /usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/python -version
-bash: /usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/python: cannot execute binary file
localhost:tmp davea$ ls -al /usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/python
-rwxr-xr-x 1 davea admin 2382880 Apr 16  2019 /usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/python

您是否尝试过使用python-m | json.tool实用工具或jq[.] 在bash中,我只会这样做

curl--header“Content type:application/json”-H“Authorization:Bearer$json_token”--data“$req”--request POST“$URL/mypath”| python-m json.tool

curl--header“Content type:application/json”-H“Authorization:Bearer$json_token”--data“$req”--request POST“$URL/mypath”| jq[.]

还要确保python在youe env$PATH中设置正确

您是否有权运行
/usr/local/ceral/python/3.7.3/Frameworks/python.framework/Versions/3.7/python
?这并不是一个真正意义上的解析问题——如果您根本无法运行python解释器,它就不会运行;这并不取决于您输入的特定代码是什么。@Poshi,这看起来不像是缺少权限——这有一个不同的错误。这看起来像是为不同的系统架构构建的二进制文件(在仅支持64位f/e的操作系统版本上运行32位二进制文件)。你为什么要开始另一个问题。。。。让我们先解决这个问题@MarkSetchell,我建议开始另一个问题,因为这里的根本问题与直接问题非常不同,因此围绕解析JSON的答案不太可能帮助其他人解决“无法执行二进制”问题。在每行代码的开头放4个空格,以使其正确格式化。
jq[.]根据
GLOBIGNORE
dotglob
的设置方式,shell可以将
jq.
以静默方式替换。更安全的做法是显式地告诉shell无论当前配置如何都不要替换它。我的shell中没有设置GLOBIGNORE/dotglob
localhost:tmp davea$ /usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/python -version
-bash: /usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/python: cannot execute binary file
localhost:tmp davea$ ls -al /usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/python
-rwxr-xr-x 1 davea admin 2382880 Apr 16  2019 /usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/python