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