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

関連情報