打印和增加数组值

我正在做一个bash脚本,我需要打印一个数字,而它的增量是这样的:

0000 0001 0002 0003 0004 

我做了这个,但不工作:

 #!/bin/bash i=0 pass[0]=0 pass[1]=0 pass[2]=0 pass[3]=0 for i in $(seq 1 9) pass[3]="$i" echo ${pass[*]} done 

我把脚本粘贴到cli上,然后得到这个。

 $ ~ #!/bin/bash $ ~ i=0 $ ~ pass[0]=0 $ ~ pass[1]=0 $ ~ pass[2]=0 $ ~ pass[3]=0 $ ~ for i in $(seq 1 9) > pass[3]="$i" bash: error sintáctico cerca del elemento inesperado `pass[3]="$i"' $ ~ echo ${pass[*]} 0 0 0 0 $ ~ done bash: error sintáctico cerca del elemento inesperado `done' $ ~ 

使用这个纯粹的bash脚本:

 for ((i=0; i<10; i++)); do printf "%04d\n" $i one 

OUTPUT:

 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 
 #!/bin/bash i=0 pass[0]=0 pass[1]=0 pass[2]=0 pass[3]=0 for i in $(seq 1 9) do pass[3]="$i" echo ${pass[*]} done 

你忘了'做'

对于那些喜欢扩展的人,你也可以这样做:

 printf "%s\n" {0001..0009} 

要么

 printf "%.4d\n" {1..9} 

没有循环!

您可以存储在一个数组,因此:

 $ myarray=( {0001..0009} ) $ printf "%s\n" "${myarray[@]}" 0001 0002 0003 0004 0005 0006 0007 0008 0009 $ echo "${myarray[3]}" 0004 

你可以使用seq来进行格式化:

 seq -w 0000 0010 

(如果您不喜欢{0000..0010}表示法,这样更有效但不允许参数替换。)