在FreeBSD和Linux中,shell for循环的范围不同



我正在尝试在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`

对于使用cshtcsh的用户:

foreach i (`seq 10000`)

如果您的系统没有seq,您可以使用awk的变通方法。

最新更新