比较两个文件中的数据,如果不匹配则替换

时间:2013-01-07 13:13:32

标签: bash shell

我使用shell脚本将echo >数据发送到$outputfile,并且始终拥有包含先前数据$oldouptdata的旧文件。我需要做的是:

echo "datahereto" > $ouptputfile 
read  $oldouptdata
diff  $ouptputfile  $olouptdata
if there is a difference   then execute function  (myfunction)    then   replace $oldoutputdata  data with $outputfile data 

这是我的情景。 有任何帮助吗?

2 个答案:

答案 0 :(得分:1)

这个小小的bash脚本应该可以解决这个问题

#!/bin/bash

echo "yourstuff" > outputfile

diff outputfile oldfile

if [ $? == 1 ]; then

    # they're different!

    # call your function
    yourfunction

    # subst old with new one
    cp -f outputfile oldfile

else

    # they're the same

fi;

答案 1 :(得分:0)

没有进一步的信息,我会说你可以只替换以前的文件。如果oldfilenewfile相同,则替换将是noop,如果它们不同,您也将进入所需的状态。

如果出于某种原因,只有当oldfile实际上与newfile不同时才需要替换if ! cmp -s oldfile newfile; then mv newfile oldfile fi ,请使用类似

的内容
{{1}}