简单的 shell 脚本有问题

trouble with simple shell script

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

去掉echo前面的星号。它们不属于 shell 脚本。 它将它们解释为通配符,并尝试执行第一个匹配 名称,即 dead.letter.

此外,不要将输出发送到 stocks.txt,您应该给它一个 到某个地方的绝对路径,它可以写成 /home/jpavlov/stocks.txt。 你可能想使用 >> 所以它附加而不是覆盖。

  • Cron 作业: 您的代码看起来是正确的。

  • Shell 脚本: 您需要删除(所有前 5 个星号)* * * * * 来自这个 Shell 脚本。因为 crontab 的这些字段是为了 安排命令执行时间。所以这是它造成的问题。

So your final code would be following:

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