我即将编写一个 shell 脚本来编辑一些文件。
我这样做:
/usr/bin/vim $file
现在我想问一下vim的退出状态。 如果用户关闭并保存更改,则执行某些操作(:wq 或:x),或者如果关闭但未进行更改(:q, :q!),则执行其他操作
if [ vi-exit-status=wq ] ; then
# do this
else # vi didn't save anything
# do that
fi
我怎样才能做到这一点? 当我调用 vi 创建一个新文件并退出而不保存时 (:q!),然后我通过
检查状态echo $?
答案是 0。如果我通过 vi/vim 保存某些内容或创建文件,它也是 0。
亲切的问候
最佳答案
退出状态不会告诉你用户在 vim 中做了什么。也许您可以比较文件前后的时间戳来查看它是否被写入?
这对我有用:
echo Edit me > editme.txt
time1=`stat -c%y editme.txt`
vim editme.txt
time2=`stat -c%y editme.txt`
if [ "$time1" != "$time2" ]; then
echo You saved it.
else
echo No change.
fi
关于Shell脚本调用vim编辑器,获取退出方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15132481/