我已经在这方面敲了一段时间,但却无法找到答案。
免责声明:我是Linux新手。
因此,我收到了一个在启动时在VM上运行的脚本,并且我使用Azure模板部署和脚本扩展,因此我只能运行一个命令,并且我按照这样运行命令
sudo sh script.sh param1 param2 param3
只要它保持一行,我就可以改变运行方式。
我的脚本由Azure导入到VM并由Azure运行,所以我不确定内部工作但由于多个权限问题而导致失败(我没有编写脚本,只是通过曾经手动运行它的人 - 我不知道权限的实际问题是什么)我终于通过这种方式使用heredoc来完成运行:
#!/usr/bin/env bash
sudo su <<"EOF"
var1=$1
var2=$2
var3=$3
rest of script
EOF
现在,脚本具有明确的工作权限,但参数不会进入su环境 - 所以我发现我可以删除引用然后它会起作用。但是那样我就无法在heredoc部分内创建新的变量。
有人可以帮我吗? :)我不知道如何解决这个问题除了重写整个脚本,这可能会花费我很长时间。
谢谢!