linux - 为什么这一行会删除所有内容而不是一行。Crontab-Bash-Sed
问题描述
我需要删除一行 cron 文件,但是当我使用这个 bash 脚本代码时,它会从 cron 文件中删除所有内容,并且不会用新结果覆盖它。
我选择使用读取为如下数字的变量删除哪一行:
read $lineToRemove
crontab -l | sed "${lineToRemove}d" | crontab -
根据我对此的理解,如果用户输入数字 2 并按回车,我会读取用户输入。然后 crontab 文件列在管道的第一部分。然后该sed
函数用于删除变量中指定编号处的行并将结果写回cron文件。然而,当我这样做时,它会从 cron 文件中删除所有内容
解决方案
read
的参数应该排除$
,就像var=value
excludes一样$
。您正在read
输入一个名为 的变量$lineToRemove
,而不是lineToRemove
。
$ read x
hi
$ echo $x
hi
$ read $x
hi
$ echo $hi
hi
当 Iread $x
时,存储值的变量是$x
,而不是x
,例如hi
。所以$hi
随后指的是读入的东西$x
。
推荐阅读
- xamarin.forms - 如何在 Xamarin.Forms for iPhone 中的集合视图上实现拖放
- javascript - 获取方法被调用,但我在我的表单中给出了 POST 方法
- html - 打字效果 - css 写完整的文本
- objective-c - 保存后实时增加录音音量?
- python - 有没有更好的方法来用 Django 安排任务?
- uitableview - How to bring out the viewController after menu item is selected?
- azure - Azure CDN 正在使用自定义域重定向流量
- makefile - 如何通过makefile在Ubuntu中创建和设置系统范围的环境变量?
- javascript - 在 TypeScript 中使用“is”关键字有什么好处?
- javascript - 如何隐藏 componentWillMount 警告