如何将变量内容发送到文件

时间:2012-05-01 23:55:04

标签: bash

基本上,我要做的是从文件中删除一行。用户输入搜索字符串,然后程序搜索除搜索字符串以外的所有内容,然后将其存储在文件中。这是我的代码:

elif [ $res -eq "2" ] 
then
     echo "Enter phrase to delete: "
     read -e deletestr
     d=`cat phonebook | grep -v $deletestr`
     echo $d > phonebook

当我运行脚本时,它总是清空电话簿文件。这是为什么?

3 个答案:

答案 0 :(得分:4)

我建议您创建一个 new 文件,并在完成删除后替换旧文件,或者使用可编辑文件的sed -i工具< em>到位。

类似的东西:

grep -v "foo" phonebook > phonebook.new
mv phonebook.new phonebook

或者

sed -i '/foo/d' phonebook

答案 1 :(得分:1)

如果要编辑文件,可以使用编辑器

ex phonebook << DONE
g/$delstring/d
x
DONE

答案 2 :(得分:0)

使用>>代替>将stdout附加到文件中。

如果您想了解有关I / O重定向的更多信息,这是一个很好的指南:http://tldp.org/LDP/abs/html/io-redirection.html