Linux
無法滿足 shell 腳本中的 if 條件
我試圖在下面執行以下shell腳本
function Check_Status () { if [[ "$(adb shell getprop sys.boot_completed)" =~ "adb: no devices/emulators found" ]]; then echo "here" else echo "im here" fi; }; Check_Status
我得到以下輸出,我希望看到“這裡”而不是“我在這裡”
不確定可能缺少什麼
是的,您圖片上的文字與腳本中的文字相同。但僅憑一張照片很難確定。
但是請注意,當您執行腳本時,文本是如何到達您的終端的?命令替換應該擷取輸出,無論被它擷取什麼,都不會被列印出來。
adb
可能將該消息列印到標準錯誤,而不是標準輸出,因此不會被擷取。您可以通過以下方式驗證這一點:
echo "running the command substitution... (errors would print after this line)" output=$(adb shell getprop sys.boot_completed) echo "captured output (stdout): '$output'"
然後看看哪裡出來的。
如果這確實是問題所在,那麼您需要在命令替換中將 stderr 重定向到 stdout:
if [[ "$(adb shell getprop sys.boot_completed 2>&1)" =~ "adb: no devices/emulators found" ]]; then ...