ps1aniuge
2019-06-11 10:42:08 +08:00
问题 :cat file.txt | grep xxx > file.txt 会被清空
我的看法:
1shell 命令不规范,垃圾。幺蛾子。
2 在 powershell 中,用 cat file.txt | grep xxx > file.txt 也会被清空。这是因为 [最大的兼容] 。
3shell 的话,可以使用多条命令,避过这个幺蛾子。如:
a=`cat /tmp/sf.txt |grep power`
echo $a > /tmp/sf.txt
powershell 本身没有这个问题,powershell 用 get-content 打开文件,用 set-content 保存文件。
cat file.txt | grep xxx | set-content file.txt #linux 的 cat
或
get-content file.txt | grep xxx | set-content file.txt
结论:
shell 命令不规范,powershell 用 [set-content] ,代替 [>] ,治疗了这个不规范。
powershell 不学 [<] ,powershell 不会 [<<] ,powershell 不懂 [EOF] ,却照样 觉得自己 很牛 x。
大家一定要记住, [<] , [>] , [<<<] , [>>] 这些 shell 中的重定向符号,是 shell 中的邪教,把人带坏,
是你成为脚本大师路上的坑。这些坑的唯一作用是“烧你脑”!