我是 linux 的新手,下面的脚本只是我的问题的一个例子:
我有一个脚本,当我执行它时它会按预期工作,但是当我将它设置为通过 crontab 运行时它不会按预期工作,因为它没有将文件内容读入变量。
我有一个文件“test.txt”,其中包含“abc”。我的脚本将文本放入变量“var”中,然后将其回显到日志文件中:
var=$(</home/pi/MyScripts/test.txt)
echo "$var" >/home/pi/MyScripts/log.log
当我执行它时它工作得很好并且它回显到日志文件中但是当我通过 crontab 设置它时却没有:
* * * * * /home/pi/MyScripts/test.sh
cron 作业运行,并向我发送以下错误消息:
/bin/sh: 1: /home/pi/MyScripts/test.sh: Permission denied.
但是我给了它777个权限:
-rwxrwxrwx 1 pi pi 25 Jun 10 15:31 test.txt
-rwxrwxrwx 1 pi pi 77 Jun 10 15:34 test.sh
有什么想法吗?
最佳答案
当您使用不同的 shell 运行脚本时会发生这种情况。它与 /bin/sh
是 dash
的系统特别相关:
$ cat myscript
echo "$(< file)"
$ bash myscript
hello world
$ sh myscript
$
要修复它,请将 #!/bin/bash
添加为脚本的第一行。
关于linux - Bash 脚本有效但在从 crontab 执行时无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24146481/