一致前の行にテキストを追加する

一致前の行にテキストを追加する

この場合、一致(updateKey.sh)を見つける前に行にテキストを追加しようとしましたが、機能しませんでした。これは私のcrontabファイルで、スクリプトはここに行を追加します。

0 06,18 * * * /home/server/scripts/CCgenerator.sh
0 05 * * * /home/server/scripts/updateKey.sh

最初の行「CCgenerator.sh」は時々削除されますが、そう見えます。以下はその行を追加するスクリプトです。

#!/bin/bash
CCgenerator="0 06,18 * * * /home/server/scripts/CCgenerator.sh"
updateKey="0 05 * * * /home/server/scripts/updateKey.sh"


if ! sudo grep -q "$CCgenerator" /var/spool/cron/crontabs/root; then
    echo "Adds CCgenerator.sh"
    sudo sed -i '/\$updateKey/i $CCgenerator' /var/spool/cron/crontabs/root
    else
    echo "CCgenerator.sh found"
fi
exit

ベストアンサー1

cronの編集目的のために、l0b0の答えは次のスクリプトを修正するための最良の方法です。

  • 検索キーのエスケープ点とアスタリスク(updateKey
  • 代替区切り記号を使用するsed(マイ選択%
  • sed式の周りの二重引用符(解析したいbash変数)

#!/bin/bash
CCgenerator="0 06,18 * * * /home/server/scripts/CCgenerator.sh"
updateKey="0 05 \* \* \* /home/server/scripts/updateKey\.sh"

if ! grep -q "$CCgenerator" cron; then
    echo "Adds CCgenerator.sh"
    sed -i "\%$updateKey%i $CCgenerator" cron
else
    echo "CCgenerator.sh found"
fi
exit

おすすめ記事