Bash脚本:布尔变量不能正常工作

Jar*_*ary 3 bash

我试图在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时,它不应该进入最后一个但是它会进入.

我不明白为什么会这样.

有谁知道吗?

非常感谢你.

cho*_*oba 7

那是因为你正在设置真正的值|,即在子shell中.子shell中的变量值不会传播回父shell.摆脱子shell:

while read line
do
    ...
done <<< "$tmp"
Run Code Online (Sandbox Code Playgroud)