gpt4 book ai didi

linux - 无法在 bash 脚本中生成 grep 命令结果

转载 作者:太空宇宙 更新时间:2023-11-04 12:18:41 25 4
gpt4 key购买 nike

早上好

上下文:我想每分钟检查一次 python 脚本是否正在运行。在我的 cron 中,我调用了一个脚本。该脚本的目标是检查进程是否正在运行。

我的脚本:

#!/bin/bash
DIR="path/to/directory"
CMD="python3 -u $DIR/script.py -arg1 $DIR/arg1 -arg2 $DIR/arg2 -arg3 $DIR/arg3"

if [ ! $(ps aux | grep 'my_pattern' | grep -v 'color')]
then
echo "Success"
"$CMD" > /dev/null
fi

使用此脚本,我想对过程进行 grep 并反转 grep 以排除颜色过程。如果该进程正在运行,则命令 (ps aux | grep 'my_pattern' | grep -v 'color') 会返回一些信息,否则,该命令不会返回任何内容。

错误是./script.sh: line 12: [!myuser+ : Untraceable command

命令的执行没有返回命令的结果,而是命令的进程号,就像我对命令执行 ps aux 一样。

如有不明白的地方请追问,我翻译问题比较困难。

感谢您的回答。

编辑:我已经应用了这样的条件:

if [[ -z $(ps aux | grep 'my_pattern' | grep -v 'color') ]]

现在我没有任何错误,但它永远不会进入我的 if 条件。

最佳答案

if [[ -z $(ps aux | grep 'my_pattern' | grep -v 'color') ]]

(注意 klashxx 显示的拼写错误)

您可以检查变量是否为空。

因此,与其使用“!”,我认为检查 ps aux 的 grepping 是否返回空字符串更合适和有效。

让我知道这是否对您有帮助。

已编辑:将“[”更正为“[[”

再次编辑:让其他用户知道,如果您需要使用此方法检查进程是否存在,请在 -z 标志之前附加 ! 以查看它是否不为空

关于linux - 无法在 bash 脚本中生成 grep 命令结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46643188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com