执行字符串操作时出现BASH错误

时间:2016-04-20 13:28:34

标签: bash

我正在尝试扫描文本,但只扫描每行的某些方面。

这是我的代码:

#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
echo $line
destdir=/home/sample.txt
#echo $destdir
#want=${line:3:51}

if [ -f "$destdir" ]
 then 
 echo "${line:3:51}" > "$destdir"

done < "$1"

我想阅读file.txt,只输出从第3个字符开始,以第54个字符结尾的行,并附加文件sample.txt。我目前收到此错误:

line 11: syntax error near unexpected token `done'
line 11: `done < "$1"'

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您缺少fi关键字来终止if声明:

if [ -f "$destdir" ]
then 
    echo "${line:3:51}" > "$destdir"
fi

但是,只需拨打一次cut

,就可以做得更好
cut -c 3-51 "$1" > /home/sample.txt