将参数传递给 su 运行的命令

将参数传递给 su 运行的命令

我想以不同的用户身份运行命令(当前用户是 root)。因此,我做

su newuser -c 'mkdir "/tmp/test"'

但我在向它传递参数时遇到问题

i="name"
su newuser -c 'mkdir "/tmp/$i"'

或者在脚本中

su newuser -c 'mkdir "/tmp/$1"'

答案1

该行为的原因是在单引号内,变量扩展被禁用。在双引号内它被启用。参见例如本次问答以获得更多见解。

因此,您可以尝试按如下方式更改您的su通话:

i="name"
su newuser -c "mkdir '/tmp/$i'"

由于 的参数su现在用双引号括起来,因此$i将会被扩展,因为单引号(对于将最终结果传递给 的解释 shell su)只是“文本”,不再特殊。

相关内容