没有 Sudo 选项

没有 Sudo 选项

我要求用户使用“读取”输入一些数据,该数据将保存在将在另一个 shell 脚本中使用的变量上。但是,由于某种原因不起作用。

这是我在 shell 中得到的脚本1.sh

#!/bin/bash
read -p "Enter Your Full Name: " Name
export Name
sudo bash script2.sh

脚本2.sh

#!/bin/bash
echo $Name

我的理解是,如果我运行 sudo bash script1.sh 将获取输入并将其放入变量中,然后使用导出我可以将其导出到另一个脚本。

顺便说一句,我正在使用 Bash 版本 4.3.11

谁能解释一下我做错了什么?我的目标是询问用户的全名,并在另一个脚本中使用他们的全名。

答案1

没有 Sudo 选项

您可以使用 source 命令在您来自的同一环境中运行另一个 bash 脚本。 (不启动子进程)

脚本1.sh

#!/bin/bash
read -p "Enter Your Full Name: " Name
source script2.sh

脚本2.sh

#!/bin/bash
echo $Name

--

与须藤

您的示例不起作用的原因是 sudo。您可以使用 Sudo -E 选项将环境变量保留为超级用户环境。

脚本1.sh

   #!/bin/bash
   read -p "Enter Your Full Name: " Name
   export Name 
   sudo -E bash script2.sh

脚本2.sh

#!/bin/bash
echo $Name

相关内容