Bash脚本优化:通过内联条件避免代码重复
优雅解决Bash脚本参数分支避免重复代码的问题
这问题提得很到位——没人喜欢写重复代码,尤其是在脚本里,维护起来太麻烦了!给你两种简洁又健壮的实现方式,完美符合你的需求:
方法1:用变量存储可选参数(简单直接)
这种方式适合参数比较简单、没有空格的场景,代码一目了然:
#!/bin/bash # 初始化空的额外参数变量 extra_args="" # 判断是否传入了-d参数 if [[ "$1" == "-d" ]]; then extra_args="-f file" shift # 移除脚本的-d参数,避免传递给docker-compose fi # 统一执行核心命令,自动拼接可选参数 docker-compose $extra_args run [你的服务名] [你的命令]
方法2:用数组存储参数(更健壮,推荐)
如果你的参数里可能包含空格,或者以后要扩展更多可选参数,用数组是更安全的选择,能避免字符串拆分的坑:
#!/bin/bash # 初始化空数组 extra_args=() if [[ "$1" == "-d" ]]; then # 往数组里添加-f和file两个元素 extra_args=(-f file) shift fi # 用数组展开的方式传递参数,确保每个参数都被正确识别 docker-compose "${extra_args[@]}" run [你的服务名] [你的命令]
额外小提示
shift命令的作用是把脚本的第一个参数(也就是-d)移除,这样后面的run命令就不会把-d当成自己的参数了,如果你的脚本不需要处理其他参数,也可以不用shift,但加上会更严谨。- 如果以后要加其他参数分支(比如
-p对应另一个配置文件),直接在if或者case里往变量/数组里加内容就行,核心的docker-compose run部分完全不用改。
内容的提问来源于stack exchange,提问作者Pablo
相关产品推荐
相关产品推荐

