我试图在Bash脚本中评估一个布尔变量,但它总是返回false.
这是代码:
DEVICE_FOUND=false
tmp=`adb devices | tail -n+2 | awk '{print $1}'`
echo "$tmp" | while read line
do
if [ "$DEVICE_ID" = "$line" ]
then
echo "Found a device"
DEVICE_FOUND=true
fi
done
if ! $DEVICE_FOUND
then
echo "ERROR: The device "$DEVICE_ID" is not connected"
exit
fi
Run Code Online (Sandbox Code Playgroud)
无论"找到设备"是否被执行,我总是进入if语句.当DEVICE_FOUND = true时,它不应该进入最后一个但是它会进入.
我不明白为什么会这样.
有谁知道吗?
非常感谢你.
那是因为你正在设置真正的值|,即在子shell中.子shell中的变量值不会传播回父shell.摆脱子shell:
while read line
do
...
done <<< "$tmp"
Run Code Online (Sandbox Code Playgroud)