解析错误:第 1 行第 6 列的数字文字无效

Abh*_*Das 5 json jq

获取股票行情的 1 个衬垫在命令行中工作正常,但我在脚本中运行时遇到此错误。

我运行从命令行获取 TICKERD 的 1 个班轮,这不会给我错误。

但是,我相信这是因为数组中的空数据?

curl -k -s https://api.earningscalendar.net/?date=20190518
[]
Run Code Online (Sandbox Code Playgroud)
#!/bin/bash
for i in {1..15}
do
newdate=`/bin/date -v +"$i"d +%Y%m%d`
TICKERD=`curl -k -s https://api.earningscalendar.net/?date=$newdate | jq -r 'map([.ticker, .when] | join(", ")) | join("\n")' | grep -w "$1"`
TICKERA=`echo $TICKERD | cut -d, -f1`
if [ "$TICKERA" == "$1" ]
then
echo $TICKERD "is on" $newdate
exit
fi
done
Run Code Online (Sandbox Code Playgroud)

错误信息 :

./earnings.sh ADSK
parse error: Invalid numeric literal at line 1, column 6
parse error: Invalid numeric literal at line 1, column 6
parse error: Invalid numeric literal at line 1, column 6
parse error: Invalid numeric literal at line 1, column 6
ADSK, amc is on 20190523
Run Code Online (Sandbox Code Playgroud)

pea*_*eak 7

要调试问题,您可以检查“curl”命令生成的输出。当我在没有 jq 的情况下循环运行它时,输出经常是“稍后重试”,就好像存在某种限制一样。

一个类似的替代方案是运行一个非常基本的 jq 程序,例如

#!/bin/bash
for i in {1..15}
do
    newdate=`/bin/date -v +"$i"d +%Y%m%d`
    echo newdate=$newdate
    curl -k -s "https://api.earningscalendar.net/?date=$newdate" | jq type
done
Run Code Online (Sandbox Code Playgroud)


Gol*_*ish 2

空数组不会导致您看到的错误消息。

编辑:问题是API稍后返回重试,如@peak所说。要解决此问题,只需添加 sleep 1 即可解决此问题

这是返回空数组但没有解析错误的示例 curl -k -s https://api.earningscalendar.net/?date=20190303 | jq -r 'map([.ticker, .when] | join(", ")) | join("\n")' | grep -w "$1"

newdate=`date +%Y%m%d`
curl -k -s https://api.earningscalendar.net/?date=$newdate | jq -r 'map([.ticker, .when] | join(", ")) | join("\n")' | grep -w "$1"
Run Code Online (Sandbox Code Playgroud)

输出

ACB, amc
TLRY, amc
CYBR, bmo
NEWR, amc
AEYE, amc
A, amc
USAT, --
RL, bmo
HUD, bmo
CATB, bmo
ROSE, amc
PAGS, amc
HDB, --
KOOL, amc
CPIX, amc
NLST, amc
AUPH, amc
VCTR, amc
ONCE, --
EVC, --
FSM, amc
JAPAY, --
VLVLY, --
RDSMY, --
ZLNDY, --
GNMSF, --
DOX, amc
PORBF, --
GDS, bmo
EGHT, amc
BEST, bmo
TAC, bmo
TIER, --
GOSS, bmo
AZZ, bmo
TRWH, amc
MDOMF, --
AUTL, bmo
ROAN, amc
CPLG, amc
CTST, bmo
DSSI, bmo
IMXI, amc
TCS, amc
MIXT, bmo
KDMN, --
SFST, --
ALLT, bmo
ARA, --
KMDA, bmo
OCX, amc
MXWL, --
HYGS, bmo
PANL, amc
MTNB, bmo
LIQT, bmo
APTX, bmo
REED, amc
MRBK, --
UQM, amc
GECC, bmo
TGEN, bmo
ENT, amc
MOGO, amc
SLGG, amc
EYEN, bmo
HCAP, bmo
WYY, amc
BLRX, bmo
SUNW, amc
TST, bmo
AYTU, bmo
XELB, bmo
ONTX, bmo
FTD, --
TCON, amc
CYTR, --
YOGA, amc
DYNT, bmo
CYCC, amc
DARE, amc
ESEA, --
EMES, --
ASCMA, --
NSPR, bmo
OPGN, amc
AGHC, --
LIOPF, --
Run Code Online (Sandbox Code Playgroud)