if 语句中的命令替换

if 语句中的命令替换

我试图将命令替换的结果与字符串进行比较,如下所示:

if [$(ping $1)=="ping: unknown host localhosts"]
then
  echo "no";
else
  echo "yes";
fi

我在这里做错了什么?

答案1

首先,您忘记了空格和引用。接下来,这是一个错误,因此您应该捕获 stderr。最后localhosts大概是$1

if [ "$(ping -c1 "$1" 2>&1)" = "ping: unknown host $1" ]

请注意,该ping消息可能取决于您的区域设置。如果您只想测试主机的名称解析,那么ping这并不是一个正确的工具。试试这个:

if getent hosts "$1" > /dev/null; then ...

相关内容