本文讲解如何使用 bash 的 if/elif/fi 和独立 if 语句,精准控制多选项(如 package1、package2)下的代码执行逻辑,避免误跳转或重复执行,并提供可直接复用的健壮写法。
在 Bash 脚本中,根据变量值(如 package1="ON" 或 package2="OFF")动态执行不同逻辑,是运维和自动化部署中的常见需求。关键在于正确理解条件分支的执行逻辑:if-elif-else 是互斥选择(仅匹配第一个为 true 的分支),而多个独立的 if 语句则是并行判断(每个条件单独评估,可能多次触发)。
✅ 正确语法要点:
? 场景一:互斥执行(仅运行首个启用的包)
适用于“二选一”策略,例如同一环境只允许启用一个功能包:
if [ "$package1" = "ON" ]; then
echo "Executing package1 workflow..."
# 替换为你实际的逻辑:如解压、配置、权限设置等
chown "$username." "/home/$username/domains/$domain/public_html/.htaccess"
elif [ "$package2" = "ON" ]; then
echo "Executing package2 workflow..."
# package2 专属操作(路径、命令、参数均可不同)
chown "$username." "/home/$username/domains/$domain/public_html/.user.ini"
fi? 场景二:独立执行(多个包可同时启用并分别运行)
适用于模块化设计,各包职责正交、可叠加:
if [ "$package1" = "ON" ]; then
ec
ho "Applying package1 settings..."
chown "$username." "/home/$username/domains/$domain/public_html/.htaccess"
fi
if [ "$package2" = "ON" ]; then
echo "Applying package2 settings..."
chown "$username." "/home/$username/domains/$domain/public_html/.user.ini"
fi⚠️ 注意事项:
总结:选择 if-elif 还是多个 if,取决于业务语义——是「单选」还是「多选」。只要语法规范、变量防护到位,即可安全实现灵活的条件驱动执行。