如何为创建目标目录的Bash脚本添加交互循环 支持重复新建多目标
最终可运行脚本
#!/bin/bash # 开启大小写不敏感匹配,兼容用户不同大小写的输入 shopt -s nocasematch # 无限循环,用户主动选择退出前重复执行逻辑 while true; do # 读取用户输入的目标名称 echo "请输入目标名称:" read targetName # 一次性创建所有目录层级,无需切换工作目录,避免路径错误 mkdir -p ~/Desktop/Notes/"${targetName}"/{IPs,SubDomains,Screenshots,NmapScans,Notes} # 询问是否继续创建 echo "是否需要创建另一个目标?(输入Y/Yes继续,No退出)" read operate # 匹配退出输入则终止循环 if [[ "${operate}" == "n" || "${operate}" == "no" ]]; then echo "脚本执行结束,退出。" break fi done
实现逻辑说明
- 外层通过
while true构造无限循环,将原有的单次创建逻辑包裹在循环体内,实现重复执行的需求 - 优化了原脚本的目录创建逻辑,直接使用对应用户主目录的绝对路径一次性生成所有需要的子目录,去掉了频繁切换工作目录的操作,避免相对路径变动导致的创建失败问题
- 变量统一用双引号包裹,兼容带有空格、特殊字符的目标名称
- 开启
nocasematch选项后无需判断输入大小写,用户输入y/Y/yes/YES都会进入下一轮创建,输入n/N/no/NO都会直接退出,容错性更高
内容的提问来源于stack exchange,提问作者SynfulAcktor
相关产品推荐
相关产品推荐

