首页 > 解决方案 > 第一个完成后如何运行第二个命令?

问题描述

我有一个脚本来查找配置值中的值并将其替换为用户输入。这仅适用于一个 if 语句。但我想用 3 个问题提示用户(询问 IP1 => 替换值,询问 IP2 => 替换值等)

简单地复制/粘贴相同的命令并使用 fi 完成是行不通的。

作品

if read -p "Enter IP1" IP1; then
  sed -i~ -e "s/myip1/${IP1}/g" test.txt
else
  echo Error
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

标签: bashif-statement

解决方案


Shell 对空格不敏感(与 Python 不同)。if语句由fi命令终止,而不是由代码的布局终止。如果您有两个if语句,则需要两个fis:

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 和操作系统通常使用全大写。你自己的变量应该有小写的名字,这样它们就不会发生冲突。


推荐阅读