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

このコマンドには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

これにより、両方の問題が解決されます。

おすすめ記事