编写数据格式化bash脚本如何实现循环请求用户输入文件名直到匹配
Bash循环请求用户输入文件名的实现方案
以下是符合需求的完整实现:
#!/bin/bash target_file="" while true; do read -p "请输入待处理的数据文件名: " input_file if [ -f "$input_file" ]; then target_file="$input_file" echo "匹配到有效文件:$target_file" break else echo "错误:不存在文件 $input_file,请重新输入" >&2 fi done # 后续数据格式化逻辑可直接使用$target_file变量 echo "正在执行$target_file的数据格式化流程..." # 在这里追加你原有的数据格式化命令
实现说明
- 采用无限
while循环持续接收用户输入,只有当输入的路径对应普通文件存在时才会跳出循环,执行后续逻辑 - 错误提示默认输出到
stderr,符合原有设计要求 - 所有变量调用都包裹双引号,兼容包含空格、特殊符号的文件名
- 如果你需要仅匹配当前工作目录下的文件,不允许用户输入绝对/相对路径,可以将校验规则修改为
[ -f "./${input_file}" ] - 如果你需要支持匹配目录、软链接等其他文件类型,可以将
-f校验参数替换为-e(仅校验路径存在,不限制类型)
内容的提问来源于stack exchange,提问作者physgeo19
相关产品推荐
相关产品推荐

