简单的shell脚本的麻烦

时间:2016-02-27 00:52:28

标签: bash shell crontab

所以我正在努力尝试在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

2 个答案:

答案 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