首页 > 解决方案 > 命令在终端中执行良好,而不是在 bash 脚本中

问题描述

我正在努力:

#!/bin/bash
if $(ps -C "bm_d21_debug")
then
    kill $(ps -C "bm_d21_debug" -o pid=)
    echo "exists"
fi

它返回:“PID:找不到命令”

不知道我做错了什么?

标签: bashshellunix

解决方案


考虑这一行:

if $(ps -C "bm_d21_debug")

ps在命令替换中执行命令,这将返回命令输出。然后该if命令尝试将该输出作为命令运行。

ps 输出的第一个单词是PIDif它将作为命令名称处理。因此,“找不到命令”错误。

你只想

if ps -C "bm_d21_debug" >/dev/null; then
    echo running
else
    echo NOT running
fi

推荐阅读