如何在 bash 中进行命令替换时将变量传递给子 shell

如何在 bash 中进行命令替换时将变量传递给子 shell

我有一个变量: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 参数运行 as 的登录 shell (假设root的登录 shell类似于 Bourne)并在其环境中运行,并处理其输出以删除所有不包含, 的行,对于其他行,删除所有出现的,并将该输出分配给shell 脚本中的变量。root-cpm path "$PKG"rootPKG=contents-of-pkgnamebasepackage:$stockapp

相关内容