我要求用户使用“读取”输入一些数据,该数据将保存在将在另一个 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