我想在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
此错误消息是什么意思?这是一个输出图像:
答案 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
。