无法满足shell脚本中的if条件

无法满足shell脚本中的if条件

我试图执行下面的 shell 脚本

function Check_Status () {

       if [[ "$(adb shell getprop sys.boot_completed)" =~ "adb: no devices/emulators found" ]]; 
       then
          echo "here"

       else 
            echo "im here"
       fi;
};

Check_Status

我得到以下输出,我期望看到“这里”而不是“我在这里”

截屏

不确定可能缺少什么

答案1

你照片上的文字看起来和你脚本中的一样,是的。但仅凭一张照片很难确定。

但请注意当您运行脚本时文本如何到达您的终端?命令替换应该捕获输出,无论它捕获什么,都不会被打印。adb可能会按照标准打印该消息错误,不是标准输出,因此不会被捕获。

你可以用这样的东西来验证:

echo "running the command substitution... (errors would print after this line)"
output=$(adb shell getprop sys.boot_completed)
echo "captured output (stdout): '$output'"

然后看看从哪里出来什么。

如果这确实是问题所在,那么您需要在命令替换中将 stderr 重定向到 stdout:

if [[ "$(adb shell getprop sys.boot_completed 2>&1)" =~ "adb: no devices/emulators found" ]]; then
    ...

相关内容