>

adb shell su -c  일반적으로 사용되는 adb 명령입니다. 일반적으로 다음과 같이 명령 행에 인수를 추가하면됩니다 :

adb shell su -c echo ab

그러나 인용 부호를 추가하려는 경우 상황이 까다로울 수 있습니다. 예를 들어, a b 를 인쇄하려면  (공백이 2 개 있습니다) 작동하지 않습니다 :

adb shell su -c echo "a  b"
adb shell su -c "echo \"a  b\""
adb shell su -c "echo 'a  b'"

다음을 사용해야합니다 :

adb shell su -c "\"echo \\\"a  b\\\"\""
adb shell "su -c \"echo \\\"a  b\\\"\""
adb shell su -c "\"echo 'a  b'\""
adb shell "su -c \"echo 'a  b'\""

이러한 명령을 작성하는 표준 방법이 무엇인지 알고 싶습니다. 표준은 따옴표를 가장 간단하고 정확하게 처리합니다.

현재 연구 :

  • adb   ssh 와 같은 방식으로 명령 인수를 처리합니다. : 인수가 공백으로 연결되고 문자열이 실행됩니다.

  • su -c  명령 행으로 단일 문자열을 예상하며 연결을 수행하지 않습니다.

그래서 adb shell su -c 를 쓰는 가장 표준적인 방법이라고 생각합니다  다음과 같아야합니다 :

adb shell "su -c \"echo \\\"a  b\\\"\""

그러나 나는 이것에 대해 확신이 없다. 내가하고있는 일이나 내가 잘못하고있는 것을 확인하는 구체적인 참조가 있습니까?


  • 답변 # 1

    가장 좋은 해결책은 작은 따옴표를 사용하는 것입니다 ( ' ) 하위 명령 주위에 :

    adb shell 'su -c echo "a  b"'
    
    
    그러나 일반적으로 작은 따옴표 안에 모든 것이 문자 그대로 취해지고 변수는 확장되지 않습니다. 이와 같이 따옴표를 중첩 할 때는 적용되지 않습니다. 예를 들어 :

    myvar='123'
    echo "$myvar"   # prints 123
    echo '$myvar'   # prints $myvar
    
    

    하지만 ( $myvar 가정)   '123' 로 설정  adb 셸 내 (예 : 전화))

    adb shell 'su -c echo "$myvar"'    # prints 123
    
    

    자체 쉘 변수를 사용하여 adb 에 포함시키려는 경우  하위 명령을 사용하면 따옴표를 간단히 뒤집을 수 있습니다.

    myvar='test'
    adb shell "su -c echo '$myvar'"    # prints test
    
    

  • 이전 rom flashing - OnePlus 5 부드러운 벽돌
  • 다음 backup - 드라이브에서 복원 할 수 없습니다