我想在 cron 作业中执行以下命令(与此类似) Cron 作业不接受这种命令模式。我也无法从外壳程序在同一行中运行。
cat > file << EOF
first line
second line
third line
EOF
让我知道是否有办法在单行中执行此操作。
我也尝试在每行末尾换行,但没有成功。
答案1
这不是将文本放入文件的唯一方法。你可以这样做:
$ printf '%s\n' 'first line' 'second line' 'third line' > file
在此之后,file
包含:
first line
second line
third line
您可以作为任何命令的参数提供的字符串的数量和长度都有限制。这在 Linux 中不应该是问题,因为这些限制往往很大,但其他 Unix 系统或嵌入式环境可能不太宽容。
答案2
您可以$'\n'
在 bash 中使用来表示新行
例如,您可以使用:
bash -c "cat <<< first\ line$'\n'second\ line$'\n'third\ line > file"
在你的 cron 中。
来自 bash 手册页:
$'string' 形式的单词会被特殊处理。该单词扩展为字符串,并按照 ANSI C 标准指定的方式替换反斜杠转义字符。反斜杠转义序列(如果存在)按如下方式解码:
\a 警报(响铃)
\b 退格键
\e
\E 转义字符
\f
换页符 \n 换行符
\r 回车符
\t 水平制表符
\v 垂直制表
符 \ 反斜杠
\' 单引号
\" 双引号
\? 问号
\nnn 值为八进制值 nnn(一到三位数字)的八位字符
\xHH 值为十六进制值 HH(一位或两位十六进制数字)的八位字符
\uHHHH Unicode (ISO/IEC 10646 ) 值为十六进制值 HHHH(一到四个十六进制数字)的字符
\UHHHHHHHH 值为十六进制值 HHHHHHHH(一到八个十六进制数字)的 Unicode (ISO/IEC 10646) 字符
\cx 一个 control-x 字符