私のスクリプトを動作させようとしましたが、動作しません。これは私のスクリプトです。
#!/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
このコマンドには2つの問題がありますsed
。
- 変数
$a
は$b
引用されていないため、シェルは変数を渡します。部分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
これにより、両方の問題が解決されます。