bash 文本处理和错误信息

UAd*_*ter 1 command-line bash grep

例如我有这个杀死 Firefox 的脚本

ps x | grep firefox | grep -v grep | awk '{print $1}'| xargs kill -9
Run Code Online (Sandbox Code Playgroud)

但是当没有 Firefox 运行时,它会吐出:

Usage:
  kill pid ...              Send SIGTERM to every process listed.
  kill signal pid ...       Send a signal to every process listed.
  kill -s signal pid ...    Send a signal to every process listed.
  kill -l                   List all signal names.
  kill -L                   List all signal names in a nice table.
  kill -l signal            Convert between signal numbers and names.
Run Code Online (Sandbox Code Playgroud)

显示错误消息的最简单方法是什么?

Lek*_*eyn 5

您用于检测 Firefox 进程的命令很糟糕,它还包括在其命令行中带有“firefox”的进程(例如目录名称)。使用pidof firefox来代替。

您可以先保存 PID,检查它是否为(非)空并调整行为:

pids=$(pidof firefox)
if [ -n "$pids" ]; then
    kill -9 $pids
else
    echo "No Firefox processes found"
fi
Run Code Online (Sandbox Code Playgroud)

或者,killall如果您不需要错误消息,请改用:

killall firefox
Run Code Online (Sandbox Code Playgroud)