【发布时间】:2018-10-19 16:58:53
【问题描述】:
查看了许多关于类似主题的帖子,但我做错了,因为我不断收到“jq:错误:无法打开文件”或“无效的数字文字”。 我试图通过 jq 将 JSON 数组作为字符串值传递给 while 循环,并在循环中读取 JSON 数组的元素。 基本 bash 脚本适用于
尝试从 nodejs 应用程序调用此 bash 脚本。我可以让批处理脚本使用
更改为使用
我的 bash 脚本:
#!/bin/bash
PRESET_ARR=$1
echo "PRESET_ARR=${PRESET_ARR}"
#PRESET_ARR='[{"resolution":"2160*2160","bitrate":60M,"framerate":60},{"resolution":"1350*1350","bitrate":"30M","framerate":60}]'
#./batch.sh '[{"resolution":"2160*2160","bitrate":"60M","framerate":60},{"resolution":"1350*1350","bitrate":"30M","framerate":60}]'
#echo "${PRESET_ARR}" | jq -r '.[] | (.resolution, .bitrate, .framerate)' |
while IFS= read resolution &&
IFS= read bitrate &&
IFS= read framerate;
#for row in $(echo "${PRESET_ARR}" | jq -r '.[] | (.resolution, .bitrate, .framerate)');
do
echo "resolution=$resolution"
echo "bitrate=$bitrate"
echo "framerate=$framerate"
done < <(jq -r '.[] | (.resolution, .bitrate, .framerate)' <<< echo "${PRESET_ARR}")
#done < <(jq -r '.[] | (".resolution", ".bitrate", ".framerate")' <<< ${PRESET_ARR})
TIA
【问题讨论】: