-1
我想在FreeBSD上迭代一系列的值。例如,在FreeBSD和Linux中,Shell for-loop的範圍有所不同嗎?
for i in {1..10000}
do echo $i
done
這在Linux上按預期工作,但在FreeBSD上打印{1..10000}
。怎麼了?
我想在FreeBSD上迭代一系列的值。例如,在FreeBSD和Linux中,Shell for-loop的範圍有所不同嗎?
for i in {1..10000}
do echo $i
done
這在Linux上按預期工作,但在FreeBSD上打印{1..10000}
。怎麼了?
{1..10000}
是brace expansion的符號和bash的特徵。不像在大多數Linux中,bash is not the default shell in FreeBSD。相反,tcsh
是默認值。當你安裝FreeBSD的時候,你可以選擇一些shell。 Bash不包含在安裝ISO中,但可以稍後作爲端口進行安裝。您可以輸入echo $SHELL
來確定您正在使用的外殼。
請嘗試使用seq
代替。從你的錯誤判斷,你看起來有sh
作爲你的shell。
在sh
:
for i in `seq 10000`
對於使用csh
或tcsh
那些:
foreach i (`seq 10000`)
如果您的系統沒有seq
,你可以使用a workaround with awk
。
沒有必要使用awk,只需使用'jot',它提供了類似的功能,並且已經在FreeBSD中使用了很長時間。 (只是爲了明確說明答案中隱含的含義,「seq」是FreeBSD的新版本。) – 2015-02-08 22:25:34