You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kali Linux下Bash脚本报Syntax error:Bad for loop variable错误求助

解决Kali Linux中Bash脚本循环变量语法错误问题

你的问题我很熟悉,这本质是Shell解释器兼容性导致的,我来帮你一步步解决:

错误原因分析

你的脚本用了Bash特有的C风格for循环(((row=1;row<=5;row++))这种写法),但如果是用sh pra20.sh执行脚本,Kali Linux里的sh默认链接到dash——这是个轻量级POSIX Shell,不支持Bash的这种扩展语法,所以会抛出Syntax error: Bad for loop variable的错误。

另外还要提个小细节:脚本里的Clear是大写的,Bash中清屏命令是小写的clear,大写会触发Clear: command not found的报错,记得先把这个改掉。

解决方案(三种可选)

1. 直接用Bash执行脚本

跳过系统默认的sh解释器,明确调用bash来运行脚本:

bash pra20.sh

2. 给脚本加可执行权限后直接运行

你的脚本开头已经写了#!/bin/bash(shebang声明),只要给脚本加上执行权限,系统就会自动用指定的bash来执行:

chmod +x pra20.sh
./pra20.sh

3. 修改脚本为POSIX兼容写法(适配dash)

如果需要脚本在dash等POSIX Shell下也能运行,把C风格循环改成标准写法,比如用while循环:

#!/bin/bash
clear
row=1
while [ $row -le 5 ]; do
    col=1
    while [ $col -le $row ]; do
        echo -n "$row "
        col=$((col + 1))
    done
    echo " "
    row=$((row + 1))
done

或者用seq命令配合for-in循环:

#!/bin/bash
clear
for row in {1..5}; do
    for col in $(seq 1 $row); do
        echo -n "$row "
    done
    echo " "
done

验证效果

修改后执行脚本,应该能正确输出如下内容:

1  
2 2  
3 3 3  
4 4 4 4  
5 5 5 5 5  

内容的提问来源于stack exchange,提问作者Sumit Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:50:44