Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何检查命令的输出是否包含字符串,然后在字符串存在时运行命令_Bash_Shell_Loops_Sh_Control Flow - Fatal编程技术网

Bash 如何检查命令的输出是否包含字符串,然后在字符串存在时运行命令

Bash 如何检查命令的输出是否包含字符串,然后在字符串存在时运行命令,bash,shell,loops,sh,control-flow,Bash,Shell,Loops,Sh,Control Flow,范例 输出应该是 哇,这是mac,如果在$MACHTYPE的输出中发现达尔文的话 请引导我 如果您使用的是bash,则可以使用=~操作符: if "darwin" in $MACHTYPE; then echo "whoa it's a mac!" fi 从bash手册页: 另外还有一个二进制运算符=~,其优先级与==和!=相同。使用时,运算符右侧的字符串被视为扩展正则表达式,并进行相应的匹配(如正则表达式(3)) 如果没有支持正则表达式的bash版本,则可以使用globbing

范例

输出应该是

哇,这是mac,如果在$MACHTYPE的输出中发现达尔文的话


请引导我

如果您使用的是
bash
,则可以使用
=~
操作符:

if "darwin" in $MACHTYPE; 
  then
    echo "whoa it's a mac!"
fi
bash
手册页:

另外还有一个二进制运算符=~,其优先级与==和!=相同。使用时,运算符右侧的字符串被视为扩展正则表达式,并进行相应的匹配(如正则表达式(3))


如果没有支持正则表达式的
bash
版本,则可以使用globbing:

请注意,您必须使用
[[
,而不是
[


其他shell,如
sh
可能支持
[[
,但该标准不保证这一点。

您可以直接评估您的命令,例如:

if [[ $MACHTYPE = *darwin* ]]  
then
    echo "whoa it's a mac!"
fi

在这种情况下,
grep
将退出0,如果找到值,输出将重定向到
/dev/null
,如果重试,则可以调用您的命令,在这种情况下:
echo“it is a mac”

下面的代码可以在cmd上获取您的命令输出,然后检查是否有特定的单词

if uname -a | grep -i "darwin" > /dev/null; then
    echo "it is a mac"
fi
if uname -a | grep -i "darwin" > /dev/null; then
    echo "it is a mac"
fi
command="command here"

if[ `echo $command | grep -c "\"darwin\""` -gt 0 ]; then
    Do anything you want here
fi