sed grep在无法识别的选项上失败

时间:2019-04-19 03:06:58

标签: sed grep

我正在自动安装NFS服务器。 在启动防火墙之前,我要检查:

systemctl status firewalld
Firewall status: ● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-04-19 02:28:46 UTC; 27min ago
 Main PID: 129969 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─129969 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

1)需要取消防火墙的屏蔽

2)防火墙死掉了

为此我执行

STATUS=`systemctl status firewalld`
echo "Firewall status: ${STATUS}"
MASKED=`grep -e "masked" $STATUS`
DEAD=`grep -e "dead" $STATUS`

但是,grep命令失败,并显示以下信息:

grep: unrecognized option '--nofork'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
grep: unrecognized option '--nofork'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.

grep在以下模式上失败:--nofork grep认为这是一个选择

我阅读了各种文章,但没有找到解决此问题的方法。 我以为我可以使用“ sed”删除“-”,但是它却出现相同的错误

干杯, 罗兰

1 个答案:

答案 0 :(得分:2)

$STATUS是字符串,而不是文件名。在POSIX Shell中,尝试:

MASKED=$(printf "%s" "$STATUS" | grep -e "masked")

在bash中,可以使用here-string消除管道:

MASKED=$(grep -e "masked" <<<"$STATUS")

评论

  1. 对于您的shell变量,最好使用小写或大小写混合形式。系统使用所有大写作为其变量,并且您不想意外地覆盖其中的一个。

  2. 除非您明确希望外壳程序执行扩展,包括分词 pathname扩展,否则请将所有shell变量放在双引号中。

示例

观察到这会产生您看到的错误:

$ Status="Firewall status: ● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-04-19 02:28:46 UTC; 27min ago
 Main PID: 129969 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─129969 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid"
$ grep -e "running" $Status
grep: unrecognized option '--nofork'
Usage: grep [OPTION]... PATTERN [FILE]...

但是,这两个版本均可工作:

$ printf "%s" "$Status" | grep -e "running"
   Active: active (running) since Fri 2019-04-19 02:28:46 UTC; 27min ago
$ grep -e "running" <<<"$Status"
   Active: active (running) since Fri 2019-04-19 02:28:46 UTC; 27min ago