我有一个由用户定义的环境变量 $file
指向的文件,定义为:
file='filename.groovy'
当我这样做时:
回显$文件
它可以正确打印,没有任何问题:
文件名.groovy
当我这样做时:
cat $file
它成功打印了文件“filename.groovy”的内容
到这里一切都很完美
但是,问题是:
当我尝试将 sed
命令的输出重定向为:
sed 's/def version = ".*"/def version = "'$version'"/' $file > $file
然后
cat $file
它没有打印任何内容,即我的原始文件被截断。
为什么会这样?
请提出使用变量$file将sed
命令的输出重定向到文件“filename.groovy”的原因和解决方案
提前致谢。 。 。
最佳答案
您无法在读取文件的同时将输出重定向到该文件。
您可以做的是在 sed
中使用 -i
参数来更新文件:
sed -i 's/def version = ".*"/def version = "'$version'"/' $file
您可以在 https://stackoverflow.com/a/16901328/1983854 中查看示例我昨天发帖了。
关于linux - linux中通过变量将输出重定向到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16916726/