gpt4 book ai didi

android - linux shell - 无法将字符串与 : adb shell getprop ro. product.brand 进行比较

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

这真的很奇怪......我无法让此测试在我的 linux shell 中产生 true,我也不知道为什么。

#!/bin/bash
a=$(adb shell getprop ro.product.brand)
adb shell getprop ro.product.brand
if [ "$a" == "Huawei" ]; then
echo "Success"
else
echo "Failed"
fi

脚本只输出:

Huawei
Failed

而这个脚本:

b=$(whoami)
whoami
if [ "$b" == "amo" ]; then
echo "Success"
else
echo "Failed"
fi

...输出:

amo
Success

谁能帮我理解一下?

我已经尝试通过管道切割或 sed 来去除 $a 中的空格或换行符,但我得到了相同的结果...

最佳答案

我建议将此作为删除前导/尾随空格的方法:

# Trims $1
# If $2 supplied, assigns result to variable named $2
# If $2 not present, echoes the value to stdout
trim()
{
if
[[ $1 =~ ^[[:blank:]]*(.*[^[:blank:]])[[:blank:]]*$ ]]
then
local result="${BASH_REMATCH[1]}"
else
local result="$1"
fi
if
(( $# > 1 ))
then
printf -v "$2" %s "$result"
else
printf %s "$result"
fi
}

该函数不使用外部程序,开销小。

也许是对正则表达式的快速解释......

^[[:blank:]]*(.*[^[:blank:]])[[:blank:]]*$
  • 它匹配所有前导和尾随空格(这并不奇怪)
  • 在中间,它匹配任何以非空白结尾的字符串,并将其保存为子表达式,以便使用 BASH_REMATCH
  • 进行访问
  • 如果没有指定“非空白”字符结束中间部分,贪婪的 .* 会吃掉字符串末尾的所有内容,包括尾随空白。
  • 另一方面,.* 肯定以非空白开头,因为贪婪的初始 [[:blank:]]* 只会遇到非空就停止。

根据您的需要,您也可以使用 [[:space:]] 而不是 [[:blank:]](此处解释差异:https://en.wikipedia.org/wiki/Regular_expression#Character_classes ).基本上,[[:blank:]] 匹配制表符和空格,[[:space:]] 也匹配换行符、回车符等。

关于android - linux shell - 无法将字符串与 : adb shell getprop ro. product.brand 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43432005/

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