我想在 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
这个错误信息是什么意思?这是一个输出图像:
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
命令。
您正在运行脚本sh
,而不是bash
。尝试:
bash split_history_file_test.sh
此代码不会产生该错误。该 ubuntu 版本附带的 bash 版本应该可以毫无问题地执行它。
注意:您想要echo $i
.