相关疑难解决方法(0)

为什么`if $(true); 然后...... fi`成功了?

灵感来自这个问题:

当条件是命令替换时,如果命令不产生输出,if语句应该做什么?

注意:示例是if $(true); then ...,而不是if true ; then ...

例如,给定:

if $(true) ; then echo yes ; else echo no ; fi
Run Code Online (Sandbox Code Playgroud)

我认为$(true)应该用true命令的输出代替,这没什么.它应该等同于:

if "" ; then echo yes ; else echo no ; fi
Run Code Online (Sandbox Code Playgroud)

打印,no因为没有名称为空字符串的命令,或者这样:

if ; then echo yes ; else echo no ; fi
Run Code Online (Sandbox Code Playgroud)

这是一个语法错误.

但实验表明,如果命令不产生输出,则该if语句将其视为true或false,具体取决于命令的状态,而不是其输出.

这是一个演示行为的脚本:

#!/bin/bash

echo -n 'true:          ' ; if true          ; then echo yes ; else echo …
Run Code Online (Sandbox Code Playgroud)

bash ksh zsh sh

22
推荐指数
3
解决办法
6038
查看次数

Mac OSX,Bash,awk和负面看后面

我想使用awk找到一个特定的进程:

ps aux|awk '/plugin-container.*Flash.*/'
Run Code Online (Sandbox Code Playgroud)

现在它找到了进程,但它将自己包含在结果中,因为ps结果也包含它们.为了防止这种情况,我试图使用负面看法如下:

ps aux|awk '/(\?<!awk).*plugin-container.*Flash.*/'
Run Code Online (Sandbox Code Playgroud)

但它不起作用.awk支持看后面吗?我究竟做错了什么?谢谢

regex macos bash awk

4
推荐指数
1
解决办法
1800
查看次数

标签 统计

bash ×2

awk ×1

ksh ×1

macos ×1

regex ×1

sh ×1

zsh ×1