我试图编写一个读取.txt文件所有行的脚本。每行都是有效的JSON,其字段为:saddr
和data
。我想获得字节大小(wc -c
),但不能这样做。
while IFS='' read -r line || [[ -n "$line" ]]; do
echo $line |
jq -r '.data' |
bytes=$(wc -c)
if (( $bytes > 200 )); then
echo $bytes
fi
done< "testear.txt"
示例testear.txt
:
{ "saddr": "157.130.222.66", "data": "9f00032a30000000" }
答案 0 :(得分:1)
您尝试使用以下命令在管道中设置bytes
:
echo $line | jq -r '.data' | bytes=$(wc -c)
但是,管道中的命令是在子shell中运行的,因此在那里设置的环境变量在顶级shell中不可用。
相反,试试这个:
bytes=$(echo "$line" | jq -r '.data' | wc -c)
- 以便您在顶级shell设置bytes
。