Bash 如何检查命令的输出是否包含字符串,然后在字符串存在时运行命令
范例 输出应该是 哇,这是mac,如果在$MACHTYPE的输出中发现达尔文的话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
请引导我 如果您使用的是
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