gpt4 book ai didi

linux - 用变量替换 Bash 命令

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:42:20 25 4
gpt4 key购买 nike

我是 bash 脚本的新手,并且在进行一个小项目时一直在学习。但是,我遇到了一个似乎无法解决的问题。

我有一个变量需要包含在命令中。当直接在 shell 中运行时(手动输入变量),该命令返回预期结果。但是,在使用变量时我无法让它工作。

因此,如果我手动运行它,它会正确返回 0 或 1,具体取决于它是否正在运行。

ps -ef | grep -v grep | grep -c ProcessName

但是,当我尝试将它嵌入到这个 while 子句中时,它的计算结果总是为 0,因为它没有搜索正确的文本。

while [ `ps -ef | grep -v grep | grep -c {$1}` -ne 0 ]
do
sleep 5
done

有什么办法可以实现吗?我尝试了无数种不同的方法都无济于事。我还尝试使用 $() 语法进行命令替换,但我也没有成功。

谢谢!

最佳答案

我认为您的意思不是 {$1},而是 "$1"。此外,您可以只执行 pgrep -c "$1" 而不是两个管道。

此外,也没有必要将grep -c 的输出与0 进行比较,因为您可以直接查看命令是否失败。因此,一个简化得多的版本可能是:

while pgrep "$1" > /dev/null
do
sleep 4
done

关于linux - 用变量替换 Bash 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4935833/

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