Bash脚本中${KO_PATH/%//}变量扩展语法的作用及写法疑问
为什么要用
${KO_PATH/%//}/test.ko而不是直接写死路径? 这段Bash代码里的${KO_PATH/%//}用了参数扩展的后缀替换语法,核心目的是兼容KO_PATH变量末尾带不带斜杠/的两种情况,保证最终拼接的路径始终合法:
- 如果
KO_PATH是/lib/modules(末尾没/),${KO_PATH/%//}会在末尾补上一个/,最终路径是/lib/modules/test.ko; - 如果
KO_PATH是/lib/modules/(末尾已有/),${KO_PATH/%//}不会做多余修改(匹配末尾的/后替换成/,等于没变化),最终路径是/lib/modules//test.ko——而Linux系统会自动把多个连续的/当成单个处理,实际还是指向正确的文件。
至于为什么不直接写死insmod /lib/modules/test.ko?原因很简单:KO_PATH是变量,不是固定值。脚本用变量是为了灵活——这个变量可能是从环境变量读取的、用户通过命令行参数传入的,或是脚本其他逻辑动态生成的。如果直接写死路径,一旦模块存放目录变动,就得修改脚本代码;用变量的话,只需要调整KO_PATH的值就行,扩展性和维护性更好。
内容的提问来源于stack exchange,提问作者lewis
相关产品推荐
相关产品推荐

