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

问题描述 投票:0回答:1

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

[我选择要删除的行中的变量显示为数字,如下所示:

read $lineToRemove

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

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

linux bash cron cron-task
1个回答
1
投票

read的参数应排除$,就像var=value排除$。您正在read进入名为$lineToRemove的变量,而不是lineToRemove

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

[当我为read $x时,存储该值的变量为$x,而不是x,例如hi。因此$hi随后指的是读入$x的事物。

© www.soinside.com 2019 - 2024. All rights reserved.