Bash for循环语法错误删除分号没有做到这一点

时间:2015-03-20 10:02:23

标签: bash for-loop syntax token

我正在为编辑器做包装,我有部分错误,我正在检查文件是否已在某个目录中编辑过。目录以格式存储在文件中:path // date // openCount。双斜杠是分隔符,因为斜杠是类似unix的系统中唯一禁止使用的字符之一。

/home/test//20150320//1
/home/d3ad/Documents/skola/2015_zima/ios/proj1/ads//20150320//1
/home/d3ad/Documents/skola/2015_zima/ios/proj1/backup.sh//20150320//1
/home/d3ad/Documents/skola/2015_zima/ios/proj1/asd//20150320//7
/home/d3ad/Documents/skola/2015_zima/ios/proj1/bs//20150320//9

代码:

FILE="false"
DIR=$(readlink -f "${2}")
#check if a file was already edited in this directory
for LINE in $(grep -n -o "${DIR}/[^/]*" ${WEDI_RC}); do
    if[ -f "${LINE}" ]; then
        FILE="true"
    fi
done

错误:

./wedi: Syntax error: "then" unexpected (expecting "done")

我试图删除分号,将“do”和“then”移到下一行,但都没有奏效。你有什么想法?我非常绝望,因为我上面有1个循环并且它正常工作。

感谢您的回答

1 个答案:

答案 0 :(得分:2)

if[之间缺少空格,因此语法错误。

if [ -f "${LINE}" ]; then # add missing space
    FILE="true"
fi