语法错误:循环变量

时间:2018-01-29 13:24:38

标签: linux bash

#!/bin/bash

Clear
for ((row=1;row<=5;row++))
do
     for((col=1;col<=row;col++))
     do
          echo -n "$row "
     done
     echo "  "
done

我使用kali Linux。当我尝试运行此脚本时,错误显示我。

  

Pra20:3:pra20:语法错误:循环变量错误

2 个答案:

答案 0 :(得分:1)

消息来自dash,在某些Linux上用作sh。因此,您使用的是dash,它不支持此语法。

假设您的脚本名称为Pra20,您可能正在运行您的脚本:

sh Pra20

而不是:

bash Pra20

./Pra20

只有最终方法才会读取#!行。同时确保您拥有chmod u+x Pra20的执行权限。

另请参阅:syntax of for loop in linux shell scripting

答案 1 :(得分:0)

for loop不支持代码中使用的

shell(sh)语法,这就是显示错误的原因。

要解决此问题,请先将脚本设为executable,然后将run设为

chmod  +x  kali.sh
./kali.sh 

否则请使用以下for loop语法

for var_name in test
do
         body of for loop
done
sh shell支持

以上语法,因此您可以将脚本作为sh kali.sh运行