我正在尝试在FreeBSD上迭代一系列值。例如,
for i in {1..10000}
do echo $i
done
这在Linux上可以正常工作,但在FreeBSD上打印{1..10000}
。怎么了?
{1..10000}
是大括号扩展的表示法,也是bash的特征。与大多数Linux不同,bash不是FreeBSD中的默认shell。相反,tcsh
是默认值。当您安装FreeBSD时,您可以选择shell。Bash不包含在安装ISO中,但可以稍后作为端口安装。您可以键入echo $SHELL
来确定您使用的shell。
请尝试使用seq
。从您的错误判断,您的外壳似乎是sh
。
在sh
:中
for i in `seq 10000`
对于使用csh
或tcsh
的用户:
foreach i (`seq 10000`)
如果您的系统没有seq
,您可以使用awk
的变通方法。