小编huo*_*sto的帖子

为什么管道输入"读取"仅在输入"while read ..."构造时有效?

我一直在尝试从程序输出中读取环境变量的输入,如下所示:

echo first second | read A B ; echo $A-$B 
Run Code Online (Sandbox Code Playgroud)

结果是:

-
Run Code Online (Sandbox Code Playgroud)

A和B都是空的.我读到了bash在子shell中执行管道命令,并且基本上阻止了管道输入读取.但是,以下内容:

echo first second | while read A B ; do echo $A-$B ; done
Run Code Online (Sandbox Code Playgroud)

似乎工作,结果是:

first-second
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下这里的逻辑是什么吗?是while...... done构造中的命令实际上是在同一个shell中执行echo而不是在子shell中执行?

bash pipe while-loop piping

69
推荐指数
3
解决办法
3万
查看次数

强迫Vim的mksession使用相对路径?

我正在尝试使用打开文件的相对路径在Vim中保存我的会话.使用cur_dirin sessionoptions,文件的路径将是相对的.当前目录,但会话文件包含cd /path/to/base/directory命令:

...
cd /path/to/base
badd +0 relpath1/file
badd +0 relpath2/file
...
Run Code Online (Sandbox Code Playgroud)

如果我退出curdirsessionoptions,cd命令将消失,但文件路径将是绝对的:

badd +0 /path/to/base/relpath1/file
badd +0 /path/to/base/relpath2/file
Run Code Online (Sandbox Code Playgroud)

有没有办法只有相对路径wrt.什么是创建会话时的当前目录 - 没有插件或编写脚本?这样会话文件只有:

badd +0 relpath1/file
badd +0 relpath2/file
Run Code Online (Sandbox Code Playgroud)

我的最终目标是拥有一个我可以复制的会话文件,例如从SVN结账到另一个.

vim session relative-path absolute-path

5
推荐指数
1
解决办法
733
查看次数

标签 统计

absolute-path ×1

bash ×1

pipe ×1

piping ×1

relative-path ×1

session ×1

vim ×1

while-loop ×1