他のユーザー(現在のユーザーはroot)でコマンドを実行したいと思います。だから私は
su newuser -c 'mkdir "/tmp/test"'
しかし、パラメータを渡すのに問題があります。
i="name"
su newuser -c 'mkdir "/tmp/$i"'
またはスクリプトから
su newuser -c 'mkdir "/tmp/$1"'
答え1
この動作の理由は、一重引用符内で変数拡張が無効になるためです。二重引用符内で有効になります。たとえば、参照してください。このQ&Aより多くの洞察を得るために。
su
したがって、次のように通話を変更できます。
i="name"
su newuser -c "mkdir '/tmp/$i'"
引数はsu
二重引用符で囲まれているので、一重引用符$i
(最終結果が渡される解釈シェルの場合su
)は単に「テキスト」にすぎず、もはや特別ではないので拡張されます。