使用变量运行屏幕命令并通过 cron 勾选(cron run .sh)

使用变量运行屏幕命令并通过 cron 勾选(cron run .sh)

我通过 cron 运行 screen 命令,其中代码位于lorem.sh文件中。

这是 cron 代码:* * * * * cd /home/z; ./lorem.sh

里面lorem.sh

screen -S screenname -X stuff $'\033[B'
sleep 1 && screen -S screenname -X stuff 2
sleep 1 && screen -S screenname -X stuff "lorem ipsum dolor"
sleep 1 && screen -S screenname -X stuff $'\n'

上面的lorem.sh代码:第一行是“向下箭头”,第四行是“Enter”

当运行lorem.shcron 时,只有第二行和第三行工作。

lorem.sh如果通过键入从终端运行,上述操作可以正常工作./lorem.sh,但不能通过 cron 运行。

答案1

大多数版本的cron运行命令/bin/sh默认使用,并且如果命令运行任何 shell 脚本(没有行#!强制使用特定 shell),/bin/sh也将用于运行它们。

在某些系统上,/bin/shdash,一个不理解ANSI-C 引用约定bash和其他 shell使用。所以你的$'\n'字符串可能被解释为 3-character string $\n

大多数版本cron都允许您指定一个 shell 来运行命令。您可以bash通过编辑 crontab 添加一行来使用它

SHELL=/bin/bash

它出现在任何安排作业的行之前。

或者,您可以通过添加来lorem.sh始终使用bash

#!/bin/bash

作为它的第一行。

相关内容