Shell脚本for循环问题求助:批量复制并重命名游戏文件
脚本错误分析与修正
原脚本的主要错误
- for循环语法错误:bash中生成1到10的序列,正确写法是
for wiz in {1..10},而非1 .. 10(多余空格且缺少大括号)。 - 条件判断语法错误:整数比较需用
-ge(大于等于)运算符,变量要加$引用,条件必须用[]或[[]]包裹,原写法if wiz >= 10完全不符合bash语法。 - 变量自增错误:
wiz+1不会改变变量值,正确自增方式为wiz=$((wiz+1))或((wiz++))。 - 语法不完整:
if语句缺少对应的fi闭合,会导致脚本无法执行。 - 逻辑冗余且危险:先移动原文件到上级目录再复制的操作完全没必要,反而可能导致原文件丢失或复制失败。
修正后的脚本
#!/bin/bash # 定义源文件路径和目标目录 SOURCE_FILE="/home/redking/.local/share/Steam/steamapps/common/Wizard101/Bin/WizardGraphicalClient.exe" TARGET_DIR="/home/redking/.local/share/Steam/steamapps/common/Wizard101/Bin" # 循环1到10,复制文件并命名 for num in {1..10} do cp "$SOURCE_FILE" "$TARGET_DIR/$num.exe" done
脚本调试方法
- 终端直接运行查错:在终端执行
bash 你的脚本名.sh,bash会直接输出语法错误的位置和原因,比如缺少fi、语法格式错误等。 - 启用调试模式:执行
bash -x 你的脚本名.sh,会逐行输出脚本执行过程和变量值,方便跟踪每一步操作是否符合预期。 - Sublime内调试:可安装Terminus等终端插件,直接在编辑器内打开终端运行脚本,实时查看输出信息。
内容的提问来源于stack exchange,提问作者spiritofbattle
相关产品推荐
相关产品推荐

