Bash 在行脚本中添加文本

Bash 在行脚本中添加文本

试图让我的脚本工作,但它不起作用。这是我的脚本

#!/bin/bash
a="* * * * * /home/server/scripts/check.sh"
b="0 06,18 * * * /home/server/scripts/checks2.sh"
sudo sed -i '28s/^/'$b'\n/' /var/spool/cron/crontabs/root
sudo sed -i '28s/^/'$a'\n/' /var/spool/cron/crontabs/root
exit

如何向其中添加变量?我刚得到sed -e incomplete 's' command

答案1

该命令有两个问题sed

  • 变量$a$b没有被引用,这使得 shell 传递它们部分作为sed几个参数,并且
  • 替换的分隔符也可以在和"/"的值中找到。$a$b

sed接受其他分隔符,例如逗号和百分比。您使用了逗号,但未使用百分比。如果您将脚本修改为

#!/bin/bash
a="* * * * * /home/server/scripts/check.sh"
b="0 06,18 * * * /home/server/scripts/checks2.sh"
sudo sed -i '28s%^%'"$b"'\n%' /var/spool/cron/crontabs/root
sudo sed -i '28s%^%'"$a"'\n%' /var/spool/cron/crontabs/root
exit

甚至

#!/bin/bash
a="* * * * * /home/server/scripts/check.sh"
b="0 06,18 * * * /home/server/scripts/checks2.sh"
sudo sed -i "28s%^%$b\n%" /var/spool/cron/crontabs/root
sudo sed -i "28s%^%$a\n%" /var/spool/cron/crontabs/root
exit

这将解决这两个问题。

相关内容