我有一个输入文件和一个在 unix bash 中运行的脚本。
问题是每次我在 vi 中编辑输入文件时,脚本都会采用第一次输入的输入文件。
我怎样才能解决这个问题 ?
跑
猫输入文件
在将其传递给您的脚本之前确保它看起来正确。尝试做:wq!确保即使在文件上设置了只读权限,它也会保存文件。这 ”!” 尽管文件有权限,wq 之后仍将强制写入。
尝试输入 ls -ltr inputFile 并检查权限。如果它们如下所示,则运行 chmod a+w inputFile
-rrr--
:w
在执行脚本之前使用in vi 保存输入文件。
纯属推测,因为缺少许多细节,但如果您的脚本打开文件并保持打开状态,它将看不到更新。如果文件只有一个(硬)链接,那么vi
(假设vi
实际上是vim
,尽管我怀疑大多数编辑器都是这样)将创建一个新文件并更改指向它的链接,但脚本仍然打开原始文件。一个可能有效的简单技术是在运行脚本之前创建文件的第二个链接:
$ ln input-file foo # Create a second link
$ script input-file # Run the script
$ vi input-file # Edit the file
这会导致vim
修改其行为,以便它实际更新文件而不是创建新文件。
@ user2613272:要么您在执行文件之前没有保存文件,要么您正在执行其他一些具有相似名称的文件。
正如@bjackfly 所建议的,我猜你在执行之前首先“cat”你的文件。