Bash

將參數傳遞給 su 執行的命令

  • November 11, 2021

我想以不同的使用者身份執行命令(目前使用者是 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將被擴展,因為單引號(對於將最終結果傳遞給的解釋 shell su)只是“文本”並且不再特殊。

引用自:https://unix.stackexchange.com/questions/677056