命令在终端中执行良好,而不是在bash脚本中执行

时间:2019-02-23 20:10:13

标签: bash shell unix

我正在尝试:

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

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

不确定我在做什么错吗?

3 个答案:

答案 0 :(得分:3)

考虑这一行:

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

答案 1 :(得分:0)

我建议也使用方括号:

if [[ $(ps -C "bm_d21_debug") ]]

但是此命令将始终返回“是”($?= 0)

答案 2 :(得分:0)

通过更改为

固定
date_part