我能说......么:
MYPATH=/root/scripts
MYSCRIPT=doit.sh
0 1 * * * $MYPATH/$MYSCRIPT
Run Code Online (Sandbox Code Playgroud)
在crontab -e?
是否可以在 中使用变量crontab -e?
Gil*_*il' 19
是的,您可以通过这种方式定义和使用变量。有一个限制(您在示例中没有遇到):=符号右侧的字符串按字面解释,删除了前导空格,因此您不能使用类似的结构FOO=$BAR/qux(例如,PATH=$HOME/bin:$PATH不会做任何有用的事情)。
这在文档中说明,您可以通过运行来查看
man 5 crontab
Run Code Online (Sandbox Code Playgroud)
(请注意,在手册的第 1 节中man crontab显示了crontab 命令的文档;您需要在第 5 节中提供crontab 文件格式的文档。)
cYr*_*rus 10
刚刚试了一下,是可以的。你可以用这个简单的例子弄清楚,把它放在你的crontab:
FOO=qwerty * * * * * echo $FOO > ~/out
并检查文件~/out(每分钟更新一次),它应该包含"qwerty".
小智 7
尽管 Linux crontabs 支持定义一些保存文字值的变量,但除了将长文本压缩为较短的表示形式或控制有关 cron 本身的一些事情(例如将电子邮件输出发送到何处)之外,它没有多大用处。
灵活性是理解 cron 条目的命令部分将被传递到使用 Vixie cron(通常安装在 Linux 系统上的系统)上的系统上/bin/sh -c定义的 shell SHELL。这意味着命令行的其余部分是一个简单的 shell 脚本。注意:了解正在使用的外壳。在 Linux/bin/sh上/bin/bash,$( ... )嵌入式命令通常是有效的,但它不会在/bin/sh只理解的旧系统上运行`。
例如,我有一个简单的 crontab 行,它每月存档一个保存消息的 MBX 文件并对其进行压缩。它看起来像这样:
15 0 1 * * nf=MailFeed-$( date +\%Y\%m ).mbx && cd Logs && mv MailFeed.mbx $nf && bzip2 -9 $nf
Run Code Online (Sandbox Code Playgroud)
这将在每个月的第一个上午 12:15 运行,设置一个带有 CCYYMM 的新文件名,将当前文件移动到新名称并压缩它。要记住的是,未转义的%(百分号)将被视为换行符,其后的数据将作为标准输入发送到百分号之前的命令。这就是为什么法线如此date +Y+m写的原因date +\%Y\%m。
| 归档时间: |
|
| 查看次数: |
18006 次 |
| 最近记录: |