You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:编写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个连续序号的文件,无需手动计算数字

测试验证:

  1. 第一次输入"巴西",生成Brazil1到Brazil10,状态文件记录Brazil 10
  2. 再次输入"巴西",生成Brazil11到Brazil20,状态文件更新为Brazil 20
  3. 输入"加拿大",生成Canada1到Canada10,状态文件新增Canada 10

内容的提问来源于stack exchange,提问作者ElectricSheepDreamingOfAndoids

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:15:38