我正在尝试检查机器是否是 ThinkPad 或不使用这样的东西:
sudo dmidecode | grep ThinkPad
Run Code Online (Sandbox Code Playgroud)
我希望最终结果返回真或假(或 1/0)。
我认为解决方案可能是这样的:
sudo dmidecode | grep -c ThinkPad | test xargs -gt 0
Run Code Online (Sandbox Code Playgroud)
但我不确定如何正确使用xargs
这里。
hee*_*ayl 18
只需在 之后添加退出状态检查grep
,默认情况下它将始终从管道的最后一个命令中获取退出状态:
sudo dmidecode | grep -q ThinkPad; echo $?
Run Code Online (Sandbox Code Playgroud)
使用-q
以抑制来自任何输出grep
,因为我们感兴趣的只是退出状态。
如果您愿意,可以使用命令分组,但这在这里有点多余:
sudo dmidecode | { grep -q ThinkPad; echo $? ;}
Run Code Online (Sandbox Code Playgroud)
mur*_*uru 13
如果您要使用带有if
检查的 shell 脚本,请-q
按照 heemayl 的建议使用:
if sudo dmidecode | grep -q Thinkpad
then
echo "I'm a Thinkpad"
fi
Run Code Online (Sandbox Code Playgroud)
由于if
块检查命令的退出状态,我们可以grep
直接依赖的退出状态,而不是打印$?
和将其与其他内容进行比较。
灵感来自Heemayl 的回答:
sudo dmidecode | grep -q ThinkPad && echo true || echo false
Run Code Online (Sandbox Code Playgroud)
如果 grep 找到 ThinkPad,则返回 true,否则返回 false。