При использовании здесь-файла все $ var оцениваются оболочкой как часть обработки.
Я думаю, что вы можете это исправить, просто экранируя любые '$' (для переменных илиshell parms, et), с символом '\', то есть '\ $ 2', и для вашего случая это будет
Edit: В вашем коде есть дополнительное слово, 'echo ', я удалил это из приведенных ниже решений.
#!/bin/bash -x
C:/scripts/adb.exe shell << EOF
su
ls
ps | grep "myapp" | awk '{print \$2}'
EOF
Или вы можете «процитировать» весь файл здесь, указав EOF, т.е.
#!/bin/bash -x
C:/scripts/adb.exe shell <<'EOF'
su
ls
ps | grep "myapp" | awk '{print $2}'
EOF
Обратите внимание, чтозаключительный EOF должен не быть заключенным в кавычки.
Надеюсь, это поможет.
PS Добро пожаловать в StackOverflow (SO) Пожалуйста, не забудьте прочитать часто задаваемые вопросы, http://tinyurl.com/2vycnvr, проголосуйте за хорошее Q / A, используя серые треугольники, http://i.imgur.com/kygEP.png, и примите ответ, который решит вашу проблему, если таковой имеется, нажав знак галочки, http://i.imgur.com/uqJeW.png