首页 > 解决方案 > 为什么这一行会删除所有内容而不是一行。Crontab-Bash-Sed

问题描述

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

我选择使用读取为如下数字的变量删除哪一行:

read $lineToRemove

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

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

标签: linuxbashcroncron-task

解决方案


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

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

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


推荐阅读