Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux if语句在cron中不起作用_Linux_Bash_Shell_Cron_Raspberry Pi2 - Fatal编程技术网

Linux if语句在cron中不起作用

Linux if语句在cron中不起作用,linux,bash,shell,cron,raspberry-pi2,Linux,Bash,Shell,Cron,Raspberry Pi2,我有以下代码:(record.sh) 如果通过(根)cronjob运行相同的脚本,则输出如下: 19/01/2016 19:07:11 start start recording 19/01/2016 19:07:01 start 如您所见,文件“action.txt”的读取没有问题(“start”两次都被记录),因此这不应该是权限问题或错误路径问题。但是当作为cronjob运行时,不会调用if语句。没有显示“开始录制” 因此,我的问题是:为什么当我手动调用脚本时if语句可以工作,而当通过c

我有以下代码:(record.sh)

如果通过(根)cronjob运行相同的脚本,则输出如下:

19/01/2016 19:07:11
start
start recording
19/01/2016 19:07:01
start
如您所见,文件“action.txt”的读取没有问题(“start”两次都被记录),因此这不应该是权限问题或错误路径问题。但是当作为cronjob运行时,不会调用if语句。没有显示“开始录制”


因此,我的问题是:为什么当我手动调用脚本时if语句可以工作,而当通过cron调用脚本时却不能工作?

您的脚本是为bash编写的;这些错误几乎可以肯定地表明它是用
/bin/sh
运行的

要么添加一个适当的shebang并确保调用它的方式尊重它(
/path/to/script
,而不是
sh/path/to/script
),要么将其修复为兼容。例如:

case $action in
  *start*)
    echo "start recording"
    ./gone.sh
    exit 1
    ;;
  *stop*)
    echo "stop recording"
    ./gone.sh
    exit 1
    ;;
esac

您确定这两次都是用同一个shell执行的吗?显示脚本的第一行(带shebang),并将cron行添加到您的问题中。是的。当为bash编写脚本时,它看起来绝对像是一个用
/bin/sh
运行的脚本。@Cyrus第一行是“cd”。。。所以是的,您(所有人)的建议可能是对的:)顺便说一句,在处理cron作业时,最好同时检查stderr。在您的情况下,您应该已经收到一条发送给stderr的错误消息,该消息将指出问题所在。是的,这就是问题所在。。非常感谢。。!我们需要添加适当的shebang:)
case $action in
  *start*)
    echo "start recording"
    ./gone.sh
    exit 1
    ;;
  *stop*)
    echo "stop recording"
    ./gone.sh
    exit 1
    ;;
esac