问题描述
在 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"
解决方法
您可以使用 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:~$