基于用户输入创建文件(Bash):新手求助带时间戳的文件生成脚本
修正后的Bash脚本实现
先指出原代码的几个问题:
read -p未指定存储输入的变量,且多余的read $REPLY属于错误写法,会导致逻辑混乱- 循环次数固定为100,没有使用用户输入的文件数量,且
eval的写法存在安全风险 - 文件名固定,所有创建的文件会重名,也没有加入时间戳
以下是修正后的脚本:
#!/bin/bash # 读取用户输入的文件数量,存入count变量 read -p "Enter the amount of files you want to create: " count # 用C风格循环遍历1到count的数字 for ((i=1; i<=count; i++)); do # 生成包含时间戳和序号的文件名,避免重名 timestamp=$(date +%Y%m%d_%H%M%S) touch "file_${timestamp}_${i}.txt" done
关键部分说明:
read -p "..." count:把用户输入的数字直接存入count变量,不需要额外的read命令for ((i=1; i<=count; i++)):Bash的C风格循环,安全且直观地控制循环次数,替代原有的不安全eval写法date +%Y%m%d_%H%M%S:生成格式为年月日_时分秒的时间戳,你可以根据需求调整格式(比如%s是Unix时间戳)touch "file_${timestamp}_${i}.txt":文件名同时包含时间戳和循环序号,确保每个文件名唯一,不会被覆盖
内容的提问来源于stack exchange,提问作者Elizr
相关产品推荐
相关产品推荐

