3

次のようにインクリメントしながら数値を出力する必要がある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'
$ ~ 
4

4 に答える 4

6

この純粋なbashスクリプトを使用します。

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

出力:

0000
0001
0002
0003
0004
0005
0006
0007
0008
0009
于 2012-11-26T17:13:18.340 に答える
2

拡張が好きな人のために、あなたはまたすることができます:

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
于 2012-11-26T17:55:41.097 に答える
2
#!/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

あなたは「する」を忘れましたか

于 2012-11-26T17:13:35.833 に答える
1

次のコマンドでフォーマットを行うことができますseq

seq -w 0000 0010

(表記が気に入らない場合{0000..0010}は、より効率的ですが、パラメーターの置換はできません。)

于 2012-11-27T06:12:03.703 に答える