Bash 脚本调用 vi 进行手动编辑,然后脚本恢复?
Bash script calls vi for manual editing, then script resumes?
我编写了一个创建文本文件备份的脚本,以及另一个使用 SED 验证文本文件中某些语法的脚本。
中间有一个手动过程:用户编辑原始文件添加一些字符串。此过程必须保持手动。
我想合并我的两个脚本,以便创建备份,为用户打开 vi,当用户完成文件编辑后,脚本继续进行语法验证。
我正在边做边学,但真的不知道如何编写 "open vi, wait for the user to do his editing, take control over and resume with verification" 部分的代码。
我读到有一个名为 system(在 Perl 中)的函数可以使用,但我的代码在 BASH 中。
关于如何在 BASH 中完成此操作的任何建议?谢谢!
在 bash
中,每个语句本质上就像是对 system
的隐式调用(除非它是内置的 shell 命令),因为 shell 脚本旨在使其成为容易 运行 其他程序。
backup some_file.txt
vi some_file.txt # The script blocks until the user exits vi
verify_syntax some_file.txt
使用 vi
和像 ls
这样的命令之间的唯一区别是 ls
会在没有用户干预的情况下完成它的工作并退出,而 vi
(或任何交互式命令)将 运行 直到用户明确退出。
我编写了一个创建文本文件备份的脚本,以及另一个使用 SED 验证文本文件中某些语法的脚本。
中间有一个手动过程:用户编辑原始文件添加一些字符串。此过程必须保持手动。
我想合并我的两个脚本,以便创建备份,为用户打开 vi,当用户完成文件编辑后,脚本继续进行语法验证。
我正在边做边学,但真的不知道如何编写 "open vi, wait for the user to do his editing, take control over and resume with verification" 部分的代码。
我读到有一个名为 system(在 Perl 中)的函数可以使用,但我的代码在 BASH 中。
关于如何在 BASH 中完成此操作的任何建议?谢谢!
在 bash
中,每个语句本质上就像是对 system
的隐式调用(除非它是内置的 shell 命令),因为 shell 脚本旨在使其成为容易 运行 其他程序。
backup some_file.txt
vi some_file.txt # The script blocks until the user exits vi
verify_syntax some_file.txt
使用 vi
和像 ls
这样的命令之间的唯一区别是 ls
会在没有用户干预的情况下完成它的工作并退出,而 vi
(或任何交互式命令)将 运行 直到用户明确退出。