“Bash脚本中的意外标记'do'附近的语法错误

时间:2017-12-08 13:56:34

标签: shell

我正在写一个Bash脚本。当我运行它时,我得到一个我不明白的语法错误。

这是我的剧本:

#!/bin/bash
i=1
while [ $i -le "6" ]
 do
 j=1
 i=`expr $i +1`
 echo \
 while [ $j -le "$i" ]
   do
   echo $i
   j=`expr $j+1`
 done
done
echo \enter code here

这里的错误:

./test.sh: line 9: syntax error near unexpected token `do'
./test.sh: line 9: `do'

我做错了什么?

1 个答案:

答案 0 :(得分:2)

首先要删除第8行的反斜杠,因为它是一个转义字符(并且它会在它之后转义换行符)。在最后一行中,反斜杠没有产生这种影响,因为它后跟e

此外,在expr表达式中,您需要用空格包围+符号。我还展示了第二种增加j的方法。

#!/bin/bash
i=1
while [ $i -le "6" ]
 do
 j=1
 ((i++))
 echo something-else
 while [ $j -le "$i" ]
   do
   echo $i
   ((j++))
 done
done

输出:

$ ./so_test.sh
something-else
2
2
something-else
3
3
3
something-else
4
4
4
4
something-else
5
5
5
5
5
something-else
6
6
6
6
6
6
something-else
7
7
7
7
7
7
7