2

我想在 bash 中创建一个 for 循环,该循环从 1 运行到存储在bash. 我已经尝试按照这个问题的答案来做,但它会产生这个错误:

Syntax error: Bad for loop variable

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

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

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

在此处输入图像描述

4

3 回答 3

10

C 风格的 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命令。

于 2012-10-26T11:14:29.390 回答
6

您正在运行脚本sh,而不是bash。尝试:

bash split_history_file_test.sh
于 2012-10-26T10:53:06.530 回答
0

此代码不会产生该错误。该 ubuntu 版本附带的 bash 版本应该可以毫无问题地执行它。

注意:您想要echo $i.

于 2012-10-26T10:36:00.027 回答