Windows 10 WSL(Ubuntu 20.04)을 사용하고 명령이 작동하도록 하려고 하는데 환경 변수를 설정하는 데 문제가 있습니다.
다음을 실행해야 합니다.
export ADB_SERVER_SOCKET=tcp:<variable ip here>:5037
이 경우 교체해야 하는 IP는 Windows에서 가져와야 하므로 제가 생각해낸 마지막 명령은 다음과 같습니다.
export ADB_SERVER_SOCKET=tcp:$(cmd.exe /C ipconfig | grep "IPv4" | awk 'NR==1{print $14}'):5037
이 경우 cmd.exe
명령은 다음을 인쇄합니다.
cmd.exe /C ipconfig | grep "IPv4" | awk 'NR==1{print $14}'
192.168.0.11
그러나 변수가 무엇인지 실행한 후 확인하면 다음과 같은 결과를 얻습니다.
echo "$ADB_SERVER_SOCKET"
:503792.168.0.11
또한 전체 내용에 따옴표를 추가해 보았지만 결과는 항상 같은 것 같습니다. 어떤 이유에서든 tcp:1을 :5037로 대체한 것 같습니다.
어떻게 작동하게 할 수 있나요?
답변1
~처럼루딕댓글에서 올바르게 언급되었습니다.
... Windows 명령의 출력에는 후행(\r, 0x0D, ^M) 문자가 있어 줄이 뒤로 접혀서 pos 1에서 계속됩니다.
입력하다( CR
) 그리고개행( LF
) 타자기 시절: CR
슬라이드(캐리지)를 시작 위치(맨 왼쪽)로 되돌리고 LF
용지 롤을 다음 줄로 전진시킵니다.
Windows 줄 끝은 항상 CRLF
이고 Unix 줄 끝은 입니다 LF
.
추가 작업을 수행 CR
하면 커서가 첫 번째 위치로 다시 이동하여 이전 위치를 덮어씁니다.
예를 들어 이를 제거하면 tr
예상한 출력을 얻을 수 있습니다.
echo tcp:$(cmd.exe /C ipconfig | grep "IPv4" | awk 'NR==1{print $14}' | tr -d $'\r'):5037
답변2
grep
당신은 필요 하지도 명령 하지도 않습니다 tr
. awk
모든 것을 할 수 있습니다(Windows 시스템이 없기 때문에 테스트되지 않았습니다).
cmd.exe /C ipconfig | awk '/IPv4/ {sub(/\r$/, "", $14); print $14}'