【问题标题】:How to use shell variables in su command string?如何在 su 命令字符串中使用 shell 变量?
【发布时间】:2020-12-21 12:31:04
【问题描述】:

在 Shell 脚本中,我尝试将数组传递给 Sudo SU 命令,如下所示

VAR=(1,2,3)
sudo su $USER -c "for p in ${VAR[@]} ; do echo $p ; done;"

问题是$p 值没有被打印出来。我已经尝试了以下所有可能的方式,但无法打印$p

sudo su $USER -c "for p in "${VAR[@]}" ; do echo "$p" ; done;"
sudo su $USER -c 'for p in ${VAR[@]} ; do echo $p ; done;'

命令输出示例

+ sudo su USER -c 'for p in 1 2 3 4 5 ; do echo  ; done;'
+ echo "Script Ended"

【问题讨论】:

标签: bash sh su


【解决方案1】:

您可以使用sh 作为sudo su 的参数来传递变量,然后在-c 调用中,您可以像在常规函数调用中那样访问var ($@ $1 ...) ;

sudo su $USER -c 'for p in "${@}"; do echo ${p}; done;' sh "${arr[@]}"
so@deb:~$ arr=(1 2 3)
so@deb:~$ sudo su $USER -c 'for p in "${@}"; do echo ${p}; done;' sh "${arr[@]}"
1
2
3
so@deb:~$

【讨论】:

    最近更新 更多