Bash
將參數傳遞給 su 執行的命令
我想以不同的使用者身份執行命令(目前使用者是 root)。因此,我做
su newuser -c 'mkdir "/tmp/test"'
但我在向它傳遞參數時遇到問題
i="name" su newuser -c 'mkdir "/tmp/$i"'
或在腳本中
su newuser -c 'mkdir "/tmp/$1"'
該行為的原因是在單引號內,變數擴展被禁用。在雙引號內它是啟用的。有關更多資訊,請參閱此問答。
因此,您可以嘗試
su
按如下方式更改您的通話:i="name" su newuser -c "mkdir '/tmp/$i'"
由於 to 的參數
su
現在用雙引號括起來,因此$i
將被擴展,因為單引號(對於將最終結果傳遞給的解釋 shellsu
)只是“文本”並且不再特殊。