使用变量在bash中编写for循环

时间:2012-10-26 10:33:26

标签: bash

我想在bash中创建一个for循环,它从1运行到存储在bash变量中的数字。我已经尝试过做this问题的答案,但它产生了这个错误:

Syntax error: Bad for loop variable

我的操作系统是Ubuntu 12.04,代码如下:

#!/bin/bash
TOP=10
for ((i=1; i<=$TOP; i++))
do
    echo $i
done

此错误消息是什么意思?这是一个输出图像:

enter image description here

3 个答案:

答案 0 :(得分:9)

C-style for循环仅适用于少数shell,而bash就是其中之一。这是语法不是POSIX标准的一部分。

#!/bin/bash
TOP=10
for ((i=1; i<=$TOP; i++))
do
    echo $i
done

符合POSIX标准的for循环将是以下

#!/bin/bash
TOP=10
for i in $(seq 1 $TOP)
do
    echo $i
done

这适用于bash和sh。

要知道您登录的是哪个shell,请执行以下命令

ps -p $$

其中$$是当前流程的PID,当前流程是您的shell,ps -p将打印有关此流程的信息。

要使用chsh命令更改登录shell。

答案 1 :(得分:6)

您正在使用sh而非bash运行脚本。 尝试:

bash split_history_file_test.sh

答案 2 :(得分:0)

此代码不会产生该错误。随ubuntu版本附带的bash版本应该没有问题地执行它。

注意:您想要echo $i