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



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

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

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

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

read的参数应该排除$,就像var=value排除$一样。您正在对一个名为$lineToRemove而非lineToRemove的变量执行read操作。

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

当I为read $x时,存储值的变量是$x,而不是x,例如hi。所以CCD_ 13随后引用被读取到CCD_。

最新更新