我正在尝试编写一个脚本,该脚本提供我当前的公共 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