求助:编写Linux Bash自动生成递增序列文件脚本(解决执行报错)
解决方法:自动生成递增序号的国家序列文件脚本
你之前的脚本报错是因为value{1..10}被bash当成了命令执行,但这些不是合法命令,而且你没关联用户输入的国家,也没处理序号递增的逻辑。下面是最简单有效的脚本,用一个小文件记录每个国家的已生成数量,实现自动递增:
#!/bin/bash # 定义存储计数的状态文件,用隐藏文件避免干扰 COUNTER_FILE=".country_file_counter" # 询问用户国家 echo "您来自哪个国家?" read input_country # 标准化国家名称:首字母大写,其余小写(比如输入brazil转成Brazil) country=$(echo "$input_country" | awk '{print toupper(substr($0,1,1)) tolower(substr($0,2))}') # 如果状态文件不存在,创建它 if [ ! -f "$COUNTER_FILE" ]; then touch "$COUNTER_FILE" fi # 读取该国家已有的计数,默认0 current_count=$(grep -w "$country" "$COUNTER_FILE" | awk '{print $2}') if [ -z "$current_count" ]; then current_count=0 fi # 计算本次生成的起始和结束序号 start=$((current_count + 1)) end=$((start + 9)) # 生成文件 for i in $(seq $start $end); do touch "${country}${i}" echo "已创建文件: ${country}${i}" done # 更新状态文件:先删除旧记录,再写入新计数 sed -i "/^$country/d" "$COUNTER_FILE" echo "$country $end" >> "$COUNTER_FILE"
使用步骤:
- 把上面的代码保存为
create_country_files.sh - 给脚本加执行权限:
chmod +x create_country_files.sh - 运行脚本:
./create_country_files.sh
核心逻辑说明:
- 用
.country_file_counter隐藏文件记录每个国家的已生成序号上限,比如Brazil 10表示上次生成到Brazil10,下次自动从11开始 - 自动标准化国家名称,不管用户输入小写、大写还是混合格式,都会转成首字母大写的规范格式
- 每次固定生成10个连续序号的文件,无需手动计算数字
测试验证:
- 第一次输入"巴西",生成
Brazil1到Brazil10,状态文件记录Brazil 10 - 再次输入"巴西",生成
Brazil11到Brazil20,状态文件更新为Brazil 20 - 输入"加拿大",生成
Canada1到Canada10,状态文件新增Canada 10
内容的提问来源于stack exchange,提问作者ElectricSheepDreamingOfAndoids
相关产品推荐
相关产品推荐

