crontab-l:
* * * * * /Users/michel/Desktop/myScript.sh
我的脚本.sh:
#!/bin/bash
/usr/local/bin/growlnotify -t 'Fact' -m "$(/Users/michel/Desktop/anotherScript.sh data.txt)" -n 'myApp'
它没有显示错误,但是 growlnotify 的消息是空的,所以"$(/Users/michel/Desktop/anotherScript.sh data.txt)"
不起作用。
但如果我手动/usr/local/bin/growlnotify -t 'Fact' -m "$(/Users/michel/Desktop/anotherScript.sh data.txt)" -n 'myApp'
从 bash 执行,它会按计划工作。
答案1
调用的 Shell 脚本cron
是非登录、非交互式 Shell,这意味着它们是在一种极其精简的环境中调用的,并且它们不提供任何典型的 Shell 启动脚本(.profile
、.bashrc
等)。
我猜这anotherScript.sh
依赖于此模式下默认情况下不可用的某些内容。例如在通常的登录或交互式 shell 启动文件中定义的某些内容,但这些内容没有被引用。
请参阅bash
的(优秀)手册页,了解可以调用的不同方式bash
,以及在每种情况下它会寻找哪些启动文件。