第一次完成后如何运行第二个命令?

时间:2018-05-15 03:03:51

标签: bash if-statement

我有一个脚本来查找配置值中的值并将其替换为用户输入。这只适用于一个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}}

2 个答案:

答案 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"