提示用户输入并将其转换为环境变量

提示用户输入并将其转换为环境变量

我正在尝试编写一个脚本,该脚本提供我当前的公共 IP,并要求用户提供一个新 IP,该 IP 应声明为 ubuntu 的环境变量,但是即使 MASTER 变量按预期工作,SLAVE 变量也没有。这是我的脚本的最小示例

#!/bin/bash 
echo $SHELLOPTS 
set -o allexport                #All variables are auto set to export
MASTER=`ip addr | grep inet | grep 10. | tail -1 | sed 's/^ *//g' | cut -d ' ' -f 2 | sed 's/\/.*$//g'`
echo Master IP is: $MASTER
echo Insert the new IP:
read input
SLAVE=$input
echo Master IP is: $MASTER
echo Slave IP is: $SLAVE

即使变量实际上被打印出来,它也不能作为环境变量重复使用多次,我一直在寻找这个问题但没有成功,任何帮助都将非常感谢

在此处输入图片描述

答案1

编辑~/.bashrc并在底部添加:

leonid@DevSSD:~$ tail -n 7  ~/.bashrc
getIP() {
  export MASTER=`ip addr | grep inet | grep 10. | tail -1 | sed 's/^ *//g' | cut -d ' ' -f 2 | sed 's/\/.*$//g'`
  echo "Master IP is: $MASTER"
  echo "Insert the new IP:"
  read input
  export SLAVE="$input"
}

在 shell 提示符下输入:$ getIP

leonid@DevSSD:~$ getIP
Master IP is: 192.168.1.101
Insert the new IP:
10.0.0.1

然后你可以检查 var 是否已设置:

leonid@DevSSD:~$ env|grep MASTER
MASTER=192.168.1.101
leonid@DevSSD:~$ env|grep SLAVE
SLAVE=10.0.0.1

相关内容