bash - 第一个完成后如何运行第二个命令?
问题描述
我有一个脚本来查找配置值中的值并将其替换为用户输入。这仅适用于一个 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
解决方案
Shell 对空格不敏感(与 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 和操作系统通常使用全大写。你自己的变量应该有小写的名字,这样它们就不会发生冲突。
推荐阅读
- context-free-grammar - aabbabb 是否属于正则表达式 ((a*| b*)bb)*?
- android - 使用初始化向量解密时的 AES 加密/解密 SQL DB 问题
- nginx - 我可以使用 Nginx Certbot 将 ssl 放入 aws 默认 ec2 域吗?
- javascript - 单击汉堡菜单将我带到页面顶部
- java - 编写一个名为 AddUp100 的方法,它接受一个值(整数)并返回接下来的 100 个数字的总和(int)
- c# - ASP.NET Core 6.0 和 Windows.Forms
- julia - 无法在 FreeBSD 13 上使用 Julia 1.6.3 安装 PyCall.jl
- javascript - P5.js 图像碰撞
- sql-server - 尽管使用了正确的列长度,但 SQL Server 中的 CSV 文件导入错误
- java - 使用用户定义的参数创建 bean?