Cygwin bash用awk调用adb未看到美元符号$

Cygwin bash用awk调用adb未看到美元符号$,awk,cygwin,adb,Awk,Cygwin,Adb,我正在windows cygwin下运行bash脚本 重要提示: 我从command.exe窗口运行bash脚本,如下所示: bash.exe myscript.sh 该脚本将执行一个adb shell和ps/awk/kill进程。安卓是植根的。除awk部分外,下面的脚本有效。似乎在窗口下运行此操作会使$2中的美元符号无效。所以最后一个awk部分不起作用。救命啊 #!/bin/bash -x C:/scripts/adb.exe shell << EOF su l

我正在windows cygwin下运行bash脚本

重要提示:

我从command.exe窗口运行bash脚本,如下所示:

bash.exe myscript.sh

该脚本将执行一个adb shell和ps/awk/kill进程。安卓是植根的。除awk部分外,下面的脚本有效。似乎在窗口下运行此操作会使$2中的美元符号无效。所以最后一个awk部分不起作用。救命啊

#!/bin/bash     -x      
C:/scripts/adb.exe shell << EOF
su
ls
ps  | grep "myapp" | echo  awk '{print $2}'
EOF

你必须这样做

ps  | grep "myapp" | awk '{print $2}'

awk
实用程序从管道或文件获取输入。当执行
echo
后接命令时,shell将其解释为纯文本

当使用here文件时,所有$var都由shell作为处理的一部分进行求值

我认为您可以解决这个问题,只需使用“\”字符转义任何“$”(用于变量或shell parms,et),即“\$2”,对于您的情况,它将是

编辑:您的代码中有一个额外的单词“echo”,我已将其从下面的解决方案中删除

#!/bin/bash     -x      
C:/scripts/adb.exe shell << EOF
su
ls
ps  | grep "myapp" | awk '{print \$2}'
EOF
#/bin/bash-x

C:/scripts/adb.exe shell抱歉,我不知道实现中的区别+很不幸,斜杠或引用EOF都不起作用。在这两种情况下,输出现在都是:#awk{print$2}@user848106:Doah,注意您的代码
echo awk'{print$2}
!它按设计工作;-)。移除回声,您应该开始处理管道流。祝你好运
#!/bin/bash     -x      
C:/scripts/adb.exe shell << EOF
su
ls
ps  | grep "myapp" | awk '{print \$2}'
EOF
#!/bin/bash     -x      
C:/scripts/adb.exe shell <<'EOF'
su
ls
ps  | grep "myapp" | awk '{print $2}'
EOF