2016-06-07 70 views
0

我已經使用這個shell腳本如何防止在Linux中重複更改文本文件?

vi -e .bash_profile << END 
i 
PATH=\$PATH:\$HOME/bin:/usr/pgsql-9.4/bin 
export PATH 
PGDATA=/usr/pgsql-9.4/data 
export PGDATA 
. 
w 
q 
END 

成功更改文本在Linux,但我有一個問題。

如果我執行腳本兩次然後在文本文件中複製。

所以,我想要防止這種情況。我如何解決它?

+0

爲什麼不使用'sed -i'? –

+0

或者只是'ed'。 – mouviciel

回答

0

那麼這取決於...如果字符串"PATH=$PATH:$HOME/bin:/usr/pgsql-9.4/bin"可以出現在文件的其他地方,那麼我們不能用它作爲你的vi已經完成其工作的指標。但是,如果該字符串,否則不會出現,我們可以包住整個事情

grep -q 'PATH=[$]PATH:[$]HOME/bin:/usr/pgsql-9.4/bin' .bash_profile 
if [ $? -eq 1 ] 
then 
    # do your vi stuff here 
fi 

你可以,如果你不打算在六東西之後做什麼用

test $? -eq 0 && exit 0 

更換,如果東西