Sud*_*nda 0 sudo parameter shell-script arguments
我需要.sh
从本地机器在我的服务器上运行文件。我可以使用以下命令来完成。
ssh -p my_port_no -i path_to_key user@ip_address "bash -s" < testOnServer.sh
Run Code Online (Sandbox Code Playgroud)
现在我需要使用上述命令传递一些参数。我按照下面的方法做了,成功了。
ssh -p my_port_no -i path_to_key user@ip_address "bash -s" < testOnServer.sh testArg1
Run Code Online (Sandbox Code Playgroud)
我的testOnServer.sh
文件如下。
testArg1=$1
echo testArg1 # testArg1 can be seen here.
sudo su
echo testArg1 # testArg1 is missing here.
Run Code Online (Sandbox Code Playgroud)
命令testArg1
后缺少的值sudo su
。
任何帮助都受到高度赞赏。
小智 6
使用 sudo su 将 shell 更改为一个新用户,即 root。因此,这些变量在新 shell 中不可用。
要共享变量,您必须将它们发布到环境中,以便 root 访问。因此,在 sudo su 命令之后,值 testArg1 不会“丢失”......当您更改外壳时,它不会被打印出来。
而是编辑 sudoers 文件以允许您的用户直接运行您需要的命令(如果必须)。
请参阅以前的帖子,例如在 bash 脚本运行时阻止所有默认命令?,关于使用“源”等来控制变量访问。并阅读一些有关 Bash 变量范围的信息,例如。使用Bash 用户指南。