评估变量-输出json文件内容

时间:2018-08-10 01:59:25

标签: linux bash shell

在bash shell中,我试图读取json文件并加载到变量

eri@xyz:~/Documents/inbound>e1=$(eval echo $(cat ./deploy/request.json))

获取该变量的输出后,我看到-bash - command not found以及.json文件的实际内容

eri@xyz:~/Documents/inbound>"$e1"

-bash: { type:Pipeline, category:Software, risk:4, short_description:sample short description text, description:sample detailed description text, assignment_group: Services - Retail Services, cmdb_ci:Retail Service, u_version:1.0, start_date:2017-01-04 18:00:00, end_date:2017-01-04 19:00:00, backout_plan:see department for standard backout plan, implementation_plan:sample implementation plan, test_plan:sample text plan, production_system:false }: command not found

是否有一种方法可以抑制输出中的-bash - command not found?。

1 个答案:

答案 0 :(得分:1)

不需要eval-只需e1=$(< ./deploy/request.json)就可以解决问题。 (感谢@shellter提供语法-you don't even need to use cat!)

要显示变量,

echo "$e1"

,而不只是"$e1"。与许多编程语言REPL不同,在命令行上单独使用"$e1"并不会输出$e1的值。相反,它告诉bash尝试将$e1的全部内容解释为命令的名称。它不是命令的名称,因此bash会告诉您找不到该名称的命令。