【问题标题】:why does this line remove everything instead of one line. Crontab-Bash-Sed为什么这一行会删除所有内容而不是一行。 Crontab-Bash-Sed
【发布时间】:2020-02-29 04:30:35
【问题描述】:

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

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

read $lineToRemove

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

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

【问题讨论】:

    标签: linux bash cron cron-task


    【解决方案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 的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-27
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      • 2014-04-20
      相关资源
      最近更新 更多