-1

我有一个用户定义的环境变量指向的文件,$file定义为:

file='filename.groovy'

当我做:

echo $file

它可以正确打印,没有任何问题:

filename.groovy

当我这样做时:

cat $file

它成功打印了文件'filename.groovy'的内容

到这里为止一切都很完美

但是,问题是:

当我尝试将sed命令的输出重定向为:

sed 's/def version = ".*"/def version = "'$version'"/' $file > $file

接着

猫$文件

它什么也没打印,即我的原始文件被截断了。

为什么会这样?

sed请提出使用变量 $file 将命令输出重定向到文件 'filename.groovy'的原因和解决方案

提前谢谢。. .

4

2 回答 2

1

您无法读取文件并同时将输出重定向到该文件。

您可以做的是使用-i参数 insed来更新文件:

sed -i 's/def version = ".*"/def version = "'$version'"/' $file

您可以在我昨天发布的https://stackoverflow.com/a/16901328/1983854中看到一个示例。

于 2013-06-04T11:48:38.447 回答
1

>在命令运行之前截断文件,但您可以使用sed -i就地替换文件。

于 2013-06-04T11:49:25.567 回答