我有一个脚本来查找配置值中的值并将其替换为用户输入。这只适用于一个if语句。但我想提示用户提出3个问题(要求IP1 =>替换值,要求IP2 =>替换值等)。
只需复制/粘贴相同的命令,然后使用fi完成就不起作用。
作品
if read -p "Enter IP1" IP1; then
sed -i~ -e "s/myip1/${IP1}/g" test.txt
else
echo Error
if read -p "Enter IP2" IP2; then
sed -i~ -e "s/myip2/${IP2}/g" test.txt
else
echo Error
fi
不起作用
{{1}}
答案 0 :(得分:1)
外壳对空白不敏感(不像Python)。 if
语句由fi
命令终止,而不是由代码布局终止。如果您有两个if
语句,则需要两个fi
s:
if read -p "Enter IP1" IP1; then
sed -i~ -e "s/myip1/${IP1}/g" test.txt
else
echo Error
fi # <<<<<< Added
if read -p "Enter IP2" IP2; then
sed -i~ -e "s/myip2/${IP2}/g" test.txt
else
echo Error
fi
顺便说一句,你不应该对变量名使用全大写,因为名称是全大写的,通常由shell和操作系统使用。你自己的变量应该有小写的名字,这样他们就不会发生冲突。
答案 1 :(得分:-1)
测试:
if read -p "Please Enter an IP" "$ip":'[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' >/dev/null; then
echo "success"
else
echo "fail"