【问题标题】:Bash script - if and grep won't workBash 脚本 - 如果和 grep 不起作用
【发布时间】:2014-03-18 08:44:27
【问题描述】:

因为这个社区看起来真的很好,所以我想我会问一个问题 -

我有这个小脚本,但它不会只是从输出中 grep 超时:

#!/bin/bash
echo -n "Enter ntp server address: "
read SERVER
if ntpdc -n -c monlist $SERVER | grep "timed out"
then 
  echo "Server won't let You use monlist."
  exit 0
else 
  echo "Server will let You use monlist."
fi

有什么想法吗?谢谢:)

【问题讨论】:

  • 手动运行ntpdc -n -c monlist $SERVER的输出是什么?
  • 我认为你应该在你的 if 参数周围加上括号

标签: linux bash grep pipe


【解决方案1】:

在这种情况下,“问题”是ntpdc 将超时消息发送到标准错误,而不是标准输出,因此grep 在管道的输入上看不到它。您可以通过将ntpdc 命令的标准错误路由到标准输出来进行补救:

if ntpdc -n -c monlist $SERVER 2>&1 | grep "timed out"
then 
  echo "Server won't let You use monlist."
  exit 0
else 
  echo "Server will let You use monlist."
fi

【讨论】:

    猜你喜欢
    • 2023-02-05
    • 1970-01-01
    • 2012-08-13
    • 2023-03-30
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多