【发布时间】:2019-01-24 16:43:07
【问题描述】:
JSON 创建新手,决定从this question 尝试 JQ。然而,当我尝试实现它时,我收到的只是 JQ 的帮助页面和这些类型的错误:./test.sh: line 43: --: command not found 最后三行。
#!/bin/bash
echo Starting
sensorType="XXX"
sensorLocation="XXX"
sensorCommand="XXXXX"
# Hardware information.
systemTime=$(date +%d-%m-%Y_%H:%M:%S)
kernalName=$(uname -s)
nodeName=$(uname -i)
kernalRelease=$(uname -r)
kernalVersion=$(uname -v)
machine=$(uname -m)
processor=$(uname -p)
hardwarePlatform=$(uname -i)
operatingSystem=$(uname -o)
timeup=$(uptime)
# Software information.
softVersion=$(XXX version)
JSON_STRING=$( jq -n \
-- arg systemTime "$systemTime" \
-- arg sensorType "$sensorType" \
-- arg sensorLocation "$sensorLocation" \
-- arg sensorCommand "$sensorCommand" \
-- arg kernalName "$kernalName" \
-- arg nodeName "$nodeName" \
-- arg kernalRelease "$kernalRelease" \
-- arg kernalVersion "$kernalVersion" \
-- arg machine "$machine" \
-- arg processor "$processor"
-- arg hardwarePlatform "$hardwarePlatform" \
-- arg operatingSystem "$operatingSystem" \
-- arg timeup "$timeup" \
-- arg softVersion "$softVersion" \
'{systemTime: $systemTime, sensorType: $sensorType, sensorLocation: $sensorLocation, kernalName: $kernalName, nodeName: $nodeName, kernalRelease: $kernalRelease, machine: $machine, processor: $processor, hardwarePlatform: $hardwarePlatform, operatingSystem: $operatingSystem, timeup: $timeup, softVersion: $softVersion }' )
echo $JSON_STRING
不确定这是否是使用 JQ 的最有效方式,或者是否有更好的方式来实现它。但我很想听听是否有更有效/更简单的方法来实现这一点。
【问题讨论】:
-
这似乎是您的
jq命令中的错字。--和arg字段之间不应有空格 -
谢谢@Inian!
-
您还缺少
processor行上的反斜杠,这就是导致“找不到命令”错误的原因;hardwarePlatform的--被视为新命令的开始,而不是jq命令的参数。
标签: json bash validation logging jq