如何创建移动文件的Bash脚本?

时间:2018-04-03 03:09:35

标签: bash shell

所以,我有209个文本文件(编号为0-208.txt),我想从目录"数据"到"查询"。

我写了这个简单的bash脚本,但它一直给我一个错误:

#!/bin/bash
counter=0
while [$counter -le 209]
do
  mv /data/$counter.txt /query
  ((counter++))
done

它给出了错误消息:

generate_all_predictions.bash: line 6: syntax error near unexpected token '$'\r''
'enerate_all_predictions.bash: line 6: ' ((counter++))

我不应该通过/ data循环代码并将所有文本文件移到/ query中吗?

3 个答案:

答案 0 :(得分:2)

您至少有两个语法错误:

  1. A carriage return somewhere in your code.通过unix2dos运行脚本进行修复。
  2. [$counter -le 209]需要[ "$counter" -le 209 ] - 空白是至关重要的,因为[实际上是一个命令,而不仅仅是许多其他语言的语法。
  3. 您还遇到逻辑错误,因为-le表示"小于或等于" ,因此脚本也会尝试移动文件209。

    由于您的文件列表相对较小,您还可以使用mv /data/{0..208}.txt /query一次性移动所有内容。

答案 1 :(得分:0)

似乎在$之后有一个回车。

你使用了什么文字编辑器?您是否在Windows编辑器中创建了脚本?

删除回车并在括号内包含其他人提到的空格应该让脚本正常工作。

答案 2 :(得分:0)

根据您的查询,数字0和208是固定的,如何

 mv /data/{0..208}.txt /query