是否有一些类似的选项dash对应于外壳pipefail的bash?
或者,如果管道中的一个命令失败(但没有在其上退出,set -e那么)获得非零状态的任何其他方式.
为了更清楚,这是我想要实现的一个例子:
在调试makefile示例中,我的规则如下所示:
set -o pipefail; gcc -Wall $$f.c -o $$f 2>&1 | tee err; if [ $$? -ne 0 ]; then vim -o $$f.c err; ./$$f; fi;
Run Code Online (Sandbox Code Playgroud)
基本上它运行会在出错时打开错误文件和源文件,并在没有错误时运行程序.给我一些打字.上面的代码段运行良好,bash但我的新Ubunty系统使用dash似乎不支持pipefail选项.
如果下面一组命令的第一部分失败,我基本上想要一个FAILURE状态:
gcc -Wall $$f.c -o $$f 2>&1 | tee err
Run Code Online (Sandbox Code Playgroud)
所以我可以用它来if表达.
有没有其他方法可以实现它?
谢谢!
Vim:是否有一个键移动光标到下一行的开头?j将光标移动到下一行中当前位置的相应位置.我正在寻找一个可以将光标移动到位置0的单个键,而不管当前行中的光标位置如何.
以及如何打印状态栏的蓝图?
set statusline?打印blank(statusline=)对我来说似乎不正确,因为我的状态行显示文件名,行和列号以及末尾的"全部"或"Bot".
我不明白undo line命令是如何工作的.
文件说 Undo all latest changes on one line.
all latest changes这里的定义是什么?
我注意到的一个行为是,有时U在第一次写入一行后撤消所有写操作.但这并不一致.例如,当我打开一个新文件时,编辑第一行,多次写入,该U命令撤消每一次更改.
我无法从谷歌搜索中找到任何具体内容.
不是数组的地址,因此它的所有元素也不变吗?
如果是这样,在如下的声明中:
char *const argv[]
Run Code Online (Sandbox Code Playgroud)
是不是const限定词多余?
Gnu Makefile 显示了两个用于立即扩展的符号,如下所示:
immediate := immediate
immediate ::= immediate
Run Code Online (Sandbox Code Playgroud)
这两者有区别吗?
参考:gnu makefile 手册第 3.7 节
gnu手册第3.8节说:
"在的明确的规则次膨胀,$$@并$$%评价,分别向目标,并且当所述目标是存档构件,所述目标部件名的文件名.该$$<变量的计算结果为在第一个规则此目标的第一个先决条件,$$^并$$+评估对那些已经出现了同一个目标(规则的所有先决条件的名单$$+有重复和$$^无)下面的例子将有助于说明这些行为:
.SECONDEXPANSION:
foo: foo.1 bar.1 $$< $$^ $$+ # line #1
foo: foo.2 bar.2 $$< $$^ $$+ # line #2
foo: foo.3 bar.3 $$< $$^ $$+ # line #3
Run Code Online (Sandbox Code Playgroud)
在第一个先决条件列表中,所有三个变量($$ <,$$ ^和$$ +)都扩展为空字符串."
我的问题:为什么$$<扩展为空字符串?上面的段落说它应该评估该目标的第一个规则的第一个必要条件.那不是foo.1吗?
vim 在线帮助 (:h) 的光标移动部分有一个名为: 的部分FORCING A MOTION TO BE LINEWISE, CHARACTERWISE OR BLOCKWISE,但在此之前它没有定义BLOCKWISE。:h blockwise带您进入块视觉(ctrl-v)部分。
blockwise 是否表示纯视觉模式并阻止使用视觉模式选择的文本?
在Makefile中,格式为
all:
@set -e; \
do more stuff
我知道set -e命令外壳程序在失败时退出。@附件的意义是什么set?