2012-03-25 72 views
2

我是unix的初學者,剛剛陷入困境。我正在使用的bash應用程序非常簡單,可以添加聯繫人,並刪除聯繫人(基於名字和姓氏)。下面是我的代碼的一部分,出於某種原因,當排除(> contacts_file)時,grep顯示剩餘的聯繫人正確,但在包含(> contacts_file)時不會保存到文件。它將'contacts_file'留空。我怎樣才能解決這個問題?或者有沒有更好的方式在聯繫人的文件中搜索聯繫人?格式在contacts_file中是:名字姓氏UNIX初學者:grep保存到文件不起作用

echo "[Remove a contact]" 
echo "First Name: " 
read first0 
echo "Last Name: " 
read last0 
grep -vw -e "$first0 $last0" contacts_file >contacts_file 

回答

5

您無法將輸出指向您所在的同一個文件。 原因是shell打開輸出文件進行寫入,因此使其爲空。

解決方法是將輸出指向臨時文件,然後將臨時文件移動到contacts_file,如果要替換它。