我想以不同的用户身份运行命令(当前用户是 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
)只是“文本”,不再特殊。