$ 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
关于linux - sed 不像其他 linux 命令那样显示退出状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19445358/