基本的にコマンドを実行し、その出力をファイルにキャプチャしたいと思います。
some_cmd > /etc/myservice.conf
内容が変わったら別のコマンドを実行したいと思います。
systemctl myservice reload
文字通り何の違いもなく実行する必要があります。
- 同じデータ、異なる順序
- ファイルがまだ存在しないか空です。
- 最後に改行を追加してください。
- 新しいファイルが空です。
私は次のようにtee
考えていました。
echo "value=1" | overwritediff /etc/myservice.conf && systemctl myservice reload
一時ファイルでこれを行うことができますがdiff
、よりきれいな方法があるかどうか疑問に思います。答えが「いいえ、スクリプトを書いてください」なら、それも大丈夫です。
それ以外の場合は、次のようにします。
some_cmd > /tmp/myservice.conf
diff /etc/myservice.conf /tmp/myservice.conf || (
mv /tmp/myservice.conf /etc/myservice.conf && systemctl myservice reload
)
答え1
単純なシェルスクリプトを使うのはどうですか?シャー1合?
#!/bin/bash
VALUE=$1
FILE=$2
SUM1=$(sha1sum $FILE)
echo "value=$VALUE" > $FILE
SUM2=$(sha1sum $FILE)
if [[ ! $SUM1 == $SUM2 ]]; then
echo "Different" #put your command here
fi
実行時:
nxr ~ touch filetest
nxr ~ bash sumtest.sh 1 filetest
-> Different
nxr ~ bash sumtest.sh 1 filetest
->
nxr ~ bash sumtest.sh 2 filetest
-> Different