所以,我有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中吗?
答案 0 :(得分:2)
您至少有两个语法错误:
unix2dos
运行脚本进行修复。[$counter -le 209]
需要[ "$counter" -le 209 ]
- 空白是至关重要的,因为[
实际上是一个命令,而不仅仅是许多其他语言的语法。您还遇到逻辑错误,因为-le
表示"小于或等于" ,因此脚本也会尝试移动文件209。
由于您的文件列表相对较小,您还可以使用mv /data/{0..208}.txt /query
一次性移动所有内容。
答案 1 :(得分:0)
似乎在$
之后有一个回车。
你使用了什么文字编辑器?您是否在Windows编辑器中创建了脚本?
删除回车并在括号内包含其他人提到的空格应该让脚本正常工作。
答案 2 :(得分:0)
根据您的查询,数字0和208是固定的,如何
mv /data/{0..208}.txt /query