使用shell脚本使用vi/vim附加文件

使用shell脚本使用vi/vim附加文件,shell,unix,vim,vi,Shell,Unix,Vim,Vi,我正在尝试编写一个shell,它将在“.txt”文件中附加一些数据(存储在变量中)。这是我试图用“vi”来做的。我知道还有其他工具可以附加文件…但我只需要使用vi 我尝试了下面的命令,但不幸的是,此命令没有将数据插入到文件末尾: echo$'i{$var}\E:x\n'| vi file.txt使用vi/vim不允许您就地对文件进行命令行编辑。相反,您可以使用它的命令行等效工具ex(),它应该可以在任何符合POSIX的shell中使用 cat file foo bar 现在使用命令行中的ex实

我正在尝试编写一个shell,它将在“.txt”文件中附加一些数据(存储在变量中)。这是我试图用“vi”来做的。我知道还有其他工具可以附加文件…但我只需要使用vi

我尝试了下面的命令,但不幸的是,此命令没有将数据插入到文件末尾:


echo$'i{$var}\E:x\n'| vi file.txt

使用
vi/vim
不允许您就地对文件进行命令行编辑。相反,您可以使用它的命令行等效工具
ex
(),它应该可以在任何符合POSIX的shell中使用

cat file
foo
bar
现在使用命令行中的
ex
实用程序

var=dude
printf '%s\n' '$a' "$var" '.' x | ex file
这将在位编辑文件,并在文件的最后一行添加文本
dude

cat file
foo
bar
dude

使用
vi/vim
不允许就地对文件进行命令行编辑。相反,您可以使用它的命令行等效工具
ex
(),它应该可以在任何符合POSIX的shell中使用

cat file
foo
bar
现在使用命令行中的
ex
实用程序

var=dude
printf '%s\n' '$a' "$var" '.' x | ex file
这将在位编辑文件,并在文件的最后一行添加文本
dude

cat file
foo
bar
dude
我想这也行

var="value" 
printf "$(cat file.txt)\n$var" > newfile.txt
我想这也行

var="value" 
printf "$(cat file.txt)\n$var" > newfile.txt

除了使用
vi
之外,您还使用了
bash
,对吗?为什么不使用简单的追加重定向?为什么需要使用
vi
?如果您还不知道,请查看bash中的。在您的情况下,
echo$'i{$var}\E:x\n'>>file.txt
应该足以满足您的需要。除了使用
vi
之外,您还使用了
bash
,对吗?为什么不使用简单的追加重定向?为什么需要使用
vi
?如果您还不知道,请查看bash中的。在您的情况下,
echo$'i{$var}\E:x\n'>>file.txt
应该足以满足您的需要。鉴于OP说他们只能使用
vi
。。。值得注意的是,
ex
vi-e
是一样的鉴于OP表示他们只能使用
vi
。。。值得注意的是,
ex
vi-e
是一样的