我在文件中有以下数据 -
{"a" : "10", "b" : "20", "c" : "30"}
当我读取此变量中的值时 -
eval "_value_=\"`cat hello1`\""
echo $_value_
等于{a : 10, b : 20, c : 30}
我无法使用jq -r
阅读此内容。有没有办法可以在 value 中读取双引号。
答案 0 :(得分:0)
不确定您的意思,但听起来您的文件hello1
包含:
{"a" : "10", "b" : "20", "c" : "30"}
并且您希望将其转换为名为_value_
的变量。如果是这种情况,您只需:
_value_=$(< hello1)
然后你可以这样做:
echo "$_value_"
{"a" : "10", "b" : "20", "c" : "30"}
答案 1 :(得分:0)
这是一个便携式POSIX解决方案(没有bashisms):
hello1文件的内容:
{"a" : "10", "b" : "20", "c" : "30"}
POSIX shell代码:
_value_="$(cat "hello1")"
echo "$_value_"
输出:
{"a" : "10", "b" : "20", "c" : "30"}
我不确定您为什么要使用eval
。该命令非常危险,特别是如果您不完全确定您正在阅读的文件的内容。如果您只需要解释变量,请考虑使用GNU envsubst(考虑到您的JSON输入,这似乎不太可能):
_value_="$(envsubst < "hello1")"
echo "$_value_"