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

Krø*_*lle 1 bash

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

Syntax error: Bad for loop variable
Run Code Online (Sandbox Code Playgroud)

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

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

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

在此输入图像描述

div*_*nov 9

C-style for循环只能用于少量shell,而bash就是其中之一.这是语法不是POSIX标准的一部分.

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

符合POSIX标准的for循环将如下所示

#!/bin/bash
TOP=10
for i in $(seq 1 $TOP)
do
    echo $i
done
Run Code Online (Sandbox Code Playgroud)

这在bash和sh中都有效.

要了解您登录的shell,请执行以下命令

ps -p $$
Run Code Online (Sandbox Code Playgroud)

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

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


Pao*_*tti 6

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

bash split_history_file_test.sh
Run Code Online (Sandbox Code Playgroud)