gpt4 book ai didi

找不到 Bash 子 shell 变量命令

转载 作者:行者123 更新时间:2023-11-29 09:39:50 25 4
gpt4 key购买 nike

我正在尝试运行命令并解释结果,但无论我做什么,我都会收到“找不到命令”错误。这是我的代码的代表性版本:

devicename="emulator-5554"
search=$(adb devices | grep -w "$devicename" | grep -w device)

until $search; do
echo "Waiting..."
sleep 10
done

我已经尝试了所有我能想到的变体,包括......

search=$(adb devices | grep -w $devicename | grep -w device)

search=$(adb devices | grep -w ${devicename} | grep -w device)

...,但都返回相同的错误。

如何才能正确解释变量?

最佳答案

您的代码仅运行一次 adb|grep|grep 管道并将输出存储在 $search 中。从 $search 读取不会重新运行管道。

不要使用变量来保存命令。使用函数。

search() {
adb devices | grep -w "$devicename" | grep -qw device
}

until search; do
echo "Waiting..."
sleep 10
done

请注意,我添加了 -q 以使最后的 grep 静音。您不需要知道它发现了什么,只需知道它发现了什么。它的退出代码才是最重要的;它的输出是无关紧要的。

如果需要,您可以内联该函数。

until adb devices | grep -w "$devicename" | grep -qw device; do
echo "Waiting..."
sleep 10
done

或者,如果您愿意,您可以将$devicename 设为参数。

search() {
adb devices | grep -w "$1" | grep -qw device
}

until search "$devicename"; do
echo "Waiting..."
sleep 10
done

关于找不到 Bash 子 shell 变量命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37059112/

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