【发布时间】:2014-08-21 01:02:56
【问题描述】:
我想简单地测试一个 android 设备是否来自计算机(对于 root/backup/flash 脚本)。 所以我必须测试 su 二进制文件的一些位置。这是我的代码:
#!/bin/sh
#####################
## ROOT CHECK
SU_LOCATIONS="/system/bin/su /system/xbin/su"
check() {
echo "Checking for SU binary…"
for file in $SU_LOCATIONS
do
suFileResult=`$ADB shell "ls $file"`
echo "suFileResult = $suFileResult"
echo "file = $file"
if [ "$suFileResult" == "$file" ];
then echo "Su trouvé à $suFileResult"
fi
done
echo "$suFileResult" > tmpbak/suFil
}
问题是即使file == suFileResult,“if”返回false。如果我删除 == 周围的空格,“if”将始终返回 TRUE……
我做错了什么?如果您提供其他方法来测试文件(以及在何处),那将是完美的。
感谢您的回答!
PS:此处的字符串可以包含空格,例如:
/system/bin/su: No such file or directory
回答后编辑:
顺便说一句,我想出了如何删除这个烦人的 \r 字符:添加
| tr -d '\r'
将删除所有字符串中的此字符(不仅在末尾)。所以就我而言:
suFileResult=$(adb shell "[[ -e $file ]]; echo \$?;" | tr -d '\r')
【问题讨论】:
-
去掉分号。
-
@323go 请解释一下,您为什么将此问题标记为与“How to compare strings in Bash script” 重复。他们没有任何共同点。