为什么以下不工作?我所要做的就是执行一个adb
命令,如果响应中包含某个字符串,则对其进行处理。Bash脚本 - 参数太多
我不断收到一个错误[; too many arguments
VARIABLE=$(adb devices);
if [ "$VARIABLE" == *list of attached* ]; then
echo "adb command worked";
fi
任何想法?
为什么以下不工作?我所要做的就是执行一个adb
命令,如果响应中包含某个字符串,则对其进行处理。Bash脚本 - 参数太多
我不断收到一个错误[; too many arguments
VARIABLE=$(adb devices);
if [ "$VARIABLE" == *list of attached* ]; then
echo "adb command worked";
fi
任何想法?
尝试引用内部[[ and ]]
参数:
VARIABLE="$(adb devices)"
if [[ "$VARIABLE" == *"list of attached"* ]]; then
echo "adb command worked";
fi
==
需要在左右两侧单独的参数。当您使用[ "$VARIABLE" == *list of attached* ]
时,*list
是==
之后的第一个参数,其余参数被视为额外参数。
'adb devices'可能也会返回一个好的退出码,在这种情况下'if adb devices>/dev/null 2>&1;那么..'会是这样做的正确方式(但不是提问者的方式)。 –
你可以或者尝试使用bash的二进制运算符=~
做正则表达式匹配:
VARIABLE="$(adb devices)"
if [[ $VARIABLE =~ list\ of\ attached ]]; then
echo "adb command worked"
fi
术语提示:通配符与_globbing patterns_相关联 - 这是OP使用的功能。 '=〜'运算符用于_ regular expression_-matching。 – mklement0
@ mklement0你是对的。已更新帖子以避免混淆。 –
在另一方面:命令'亚行devices'返回的话'设备列表attached',不'attached'的名单。所以你的'if'语句可能总是返回false。 – anishsane