gpt4 book ai didi

bash - 如何在 su 命令字符串中使用 shell 变量?

转载 作者:行者123 更新时间:2023-12-04 01:09:12 24 4
gpt4 key购买 nike

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

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

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

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:~$

关于bash - 如何在 su 命令字符串中使用 shell 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65392816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com