意外的文件结束bash

意外的文件结束bash,bash,while-loop,eof,Bash,While Loop,Eof,所以,我有一个,应该从列表中提取一行并重复它。 现在,while循环不工作(?),并返回以下错误:HARR.sh:line 9:语法错误:意外的文件结尾 怎么了?这是你想要的吗 lines=`grep -c "" List` a=1 while [$a -lt $lines] do b=`sed "${a} q;d" List` a=$a+1 echo $b done #/bin/bash

所以,我有一个,应该从列表中提取一行并重复它。 现在,while循环不工作(?),并返回以下错误:
HARR.sh:line 9:语法错误:意外的文件结尾

怎么了?这是你想要的吗

lines=`grep -c "" List`
a=1
    while [$a -lt $lines] 
        do
            b=`sed "${a} q;d" List`
            a=$a+1
            echo $b
    done
#/bin/bash
#
设a=1
读行时;做
回显“$a$行”
设a+=1
完成<列表

[
之后和
]
之前的空格:
而[$a-lt$lines]
a=$a+1
->
((a++)
@P.P.
++
在一些shell中可以工作,但它不是,因此
a=$((a+1))
是更便携的选择。查看一些输入+所需的输出会很有用,因为在循环中对同一个文件多次运行
sed
可能是不必要的。@TomFenech问题被标记为bash。应至少在bash中可移植;-)会告诉你:在
[
之后和
]
之前添加空格;使用
$()
而不是旧式
`
;双引号可以防止全局搜索和分词,也就是说,大多数事情。这可以更好地做到,因为只需
nl List
,甚至
cat-n List
a
;该数字仅用于在
sed
脚本中选择一行,而不显示在输出中。这不是我要查找的。我有一个名字列表,如果可能的话,我想让它用一段时间来回显这个名字。这是课堂作业吗?不,我甚至没有这个主题。
#!/bin/bash
#
let a=1
while read line; do
    echo "$a $line"
    let a+=1
done < List