0

我有一个输入文件和一个在 unix bash 中运行的脚本。

问题是每次我在 vi 中编辑输入文件时,脚本都会采用第一次输入的输入文件。

我怎样才能解决这个问题 ?

4

4 回答 4

1

猫输入文件

在将其传递给您的脚本之前确保它看起来正确。尝试做:wq!确保即使在文件上设置了只读权限,它也会保存文件。这 ”!” 尽管文件有权限,wq 之后仍将强制写入。

尝试输入 ls -ltr inputFile 并检查权限。如果它们如下所示,则运行 chmod a+w inputFile

-rrr--

于 2013-08-22T06:18:30.740 回答
0

:w在执行脚本之前使用in vi 保存输入文件。

于 2013-08-22T05:39:02.177 回答
0

纯属推测,因为缺少许多细节,但如果您的脚本打开文件并保持打开状态,它将看不到更新。如果文件只有一个(硬)链接,那么vi(假设vi实际上是vim,尽管我怀疑大多数编辑器都是这样)将创建一个新文件并更改指向它的链接,但脚本仍然打开原始文件。一个可能有效的简单技术是在运行脚本之前创建文件的第二个链接:

$ ln input-file foo  # Create a second link
$ script input-file  # Run the script
$ vi input-file      # Edit the file

这会导致vim修改其行为,以便它实际更新文件而不是创建新文件。

于 2013-08-22T14:29:23.533 回答
0

@ user2613272:要么您在执行文件之前没有保存文件,要么您正在执行其他一些具有相似名称的文件。
正如@bjackfly 所建议的,我猜你在执行之前首先“cat”你的文件。

于 2013-08-28T10:46:28.833 回答