linux - 为什么这一行删除所有内容而不是一行。 Crontab-Bash-Sed

标签 linux bash cron cron-task

我需要删除 cron 文件的一行,但是当我使用此 bash 脚本代码时,它会删除 cron 文件中的所有内容,并且不会用新结果覆盖它。

我选择要删除的行,变量被读取为如下所示的数字:

read $lineToRemove

crontab -l | sed "${lineToRemove}d" | crontab -

根据我的理解,如果用户输入数字 2 并按回车键,我会读取用户输入。然后 crontab 文件列在管道的第一部分。然后使用sed函数删除变量中指定编号处的行,并将结果写回cron文件。然而,当我这样做时,它会从 cron 文件中删除所有内容

最佳答案

read的参数应该排除$,就像var=value排除$一样。您正在读取名为$lineToRemove 的变量,而不是lineToRemove

$ read x 
hi
$ echo $x
hi
$ read $x 
hi
$ echo $hi
hi

当我读取$x时,存储值的变量是$x,而不是x,例如hi。所以 $hi 随后指的是读入 $x 的东西。

关于linux - 为什么这一行删除所有内容而不是一行。 Crontab-Bash-Sed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58683574/

相关文章:

c - ubuntu 上的信号处理 C 编程

linux - 较新版本的 docker 有 --cap-add,可以添加哪些 CAP?

linux - 多核处理器核心通信速度

Linux AWK - 拆分文件时自定义文件名

linux - 在 Bash 中将文件中的所有数字四舍五入为相等长度?

c - 使用 Grep 查找 C 文件的变量

linux - 如何从 bz2 存档中获取文件列表(ls 命令)?

linux - sed 在 crontab 中添加新的注释行

php - 在 bash 中循环 php 脚本

php - 如何不杀死服务器并通过 simplexml 类和 GD 刷新超过 2000 个图像?