Bash에서 명령 대체를 수행할 때 변수를 서브쉘에 전달하는 방법

Bash에서 명령 대체를 수행할 때 변수를 서브쉘에 전달하는 방법

변수가 있습니다 : pkgname=com.google.android.youtube

명령은

su -c "stockapp=$(pm 경로$pkgname | grep base | sed 'sed 's/package://g')"

변수가 큰따옴표 안에 전달되지만 $()에는 전달되지 않는 것을 확인했습니다. 거기에 변수를 어떻게 전달할 수 있습니까?

답변1

귀하의 코드가 이해되지 않습니다.

아마도 당신은 다음을 의미할 것입니다:

stockapp=$(
  PKG=$pkgname su -c 'pm path "$PKG"' |
    sed  '/base/!d; s/package://g'
)

즉, as 및 인수를 사용하여 로그인 셸을 실행하고(가상 root로그인 셸은 Bourne과 유사함) 해당 환경에서 실행하고 출력을 처리하여 를 포함하지 않는 모든 줄을 제거하고 다른 줄의 경우 제거합니다. 의 모든 발생을 확인하고 해당 출력을 쉘 스크립트의 변수에 할당합니다.root-cpm path "$PKG"rootPKG=contents-of-pkgnamebasepackage:$stockapp

관련 정보