Я наткнулся на странное поведение, которое не могу объяснить. Я пытался сузить проблему. У меня есть следующий тестовый скрипт. sh script:
echo before
adb shell ls
echo after
Если я запускаю скрипт с bash -x testscript.sh
, все работает как положено, и я получаю следующий вывод:
+ echo before
before
+ adb shell ls
acct
bin
bugreports
...
sdcard
storage
sys
system
ueventd.rc
vendor
+ echo before
before
Но если я запускаю скрипт как конвейерный скрипт с cat testscript.sh | bash -sx
, я получаю следующий вывод:
+ echo before
before
+ adb shell ls
acct
bin
bugreports
...
sdcard
storage
sys
system
ueventd.rc
vendor
Последний echo after
не выполняется, и я не могу понять, почему. Скрипт работает на сервере Ubuntu 18.04. Это adb из официального пакета Ubuntu.
$ adb --version
Android Debug Bridge version 1.0.39
Version 1:8.1.0+r23-5~18.04
Installed as /usr/lib/android-sdk/platform-tools/adb
$ bash --version
GNU bash, version 4.4.20(1)-release (x86_64-pc-linux-gnu)
Пожалуйста, кто-нибудь может подсказать мне, что здесь происходит.