繁体   English   中英

sed没有像其他linux命令一样显示退出状态

[英]sed is not showing exit status as other linux commands

$ cat file 
aa
Baa
CaaD
$ sed -i -e 's/aa/AA/' file
$ echo $?
0
$ cat file
AA
BAA
CAAD
$ sed -i -e 's/aa/AA/' file
$ echo $?
0

在两种情况下,此sed命令的退出状态是否都相同,并且返回的退出状态与0相同。如果更改,我希望将其设置为0,如果未进行任何修改,我希望将其设置为1。

如果grep命令找到了某个字符串则返回0,否则返回1;如果sed命令修改了文件,则必须返回0,而sed命令没有进行任何修改,则必须返回1。

我尝试使用sed内部“ q”命令,但没有帮助。 请帮我。

答案是“因为sed的实现方式”

如果要查看是否进行了任何更改

sed -i.bak -e 's/aa/AA/' file
if diff -q file file.bak >/dev/null; then
    echo no changes
else
    echo something changed
fi

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM