所以我正在努力尝试在linux中编写shell脚本,我有一个已经出来并抓住当前的股票报价,并希望以txt或json格式保存。好像我可以在终端中运行脚本,但是当我在crontab上设置它时,它似乎失败了。有人可以说清楚,这就是我到目前为止所做的一切。
Cron工作:
#!/usr/bin
* * * * * PATH=$PATH:/usr/local/bin:/usr/bin && export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH && /home/mint/Desktop/BashScripts/Stocks/GetStocks.sh
Shell脚本:
#!/bin/bash
* * * * * echo -e "[{'Ford':' $(curl -s 'http://download.finance.yahoo.com/d/quotes.csv?s=aapl&f=l1') ', 'Square':' $(curl -s 'http://download.finance.yahoo.com/d/quotes.csv?s=sq&f=l1') ' }]" > stocks.txt
错误:
/home/mint/Desktop/BashScripts/Stocks/GetStocks.sh: line 2: dead.letter: command not found
答案 0 :(得分:1)
在echo
前面丢失星号。它们不属于shell脚本。
它将它们解释为通配符,并尝试执行第一个匹配
名称,dead.letter
。
此外,您应该给它一个,而不是将输出发送到stocks.txt
它可以像/home/jpavlov/stocks.txt
那样编写的绝对路径。
你可能想要使用>>
,所以它会附加而不是覆盖。
答案 1 :(得分:0)
Cron作业:您的代码看起来是正确的。
Shell脚本:您需要删除(所有前5个星号)* * * * * 从这个Shell脚本。因为 crontab 的thess字段是 安排命令执行时间。所以这里就是创造问题。
所以你的最终代码将遵循:
Cron职位:
#!/usr/bin
* * * * * PATH=$PATH:/usr/local/bin:/usr/bin && export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH && /home/mint/Desktop/BashScripts/Stocks/GetStocks.sh
Shell脚本:
#!/bin/bash
echo -e "[{'Ford':' $(curl -s 'http://download.finance.yahoo.com/d/quotes.csv?s=aapl&f=l1') ', 'Square':' $(curl -s 'http://download.finance.yahoo.com/d/quotes.csv?s=sq&f=l1') ' }]" > stocks.txt