0

簡単に言うと、printfは、数値を置き換えるのではなく、数値にゼロを追加しています。

詳細:

現在、Ubuntu OSでBashを使用して、データベースのクエリを含む一連の分割ファイルを実行しようとしています。

ファイルは次のように分割されました。

x0000000000
x0000000001
x0000000002
etc.

私は、Bashのprintfのパディングゼロ関数を使用してこれらのファイルを実行する小さなスクリプトを作成していました。

私のスクリプトは、私がGoogleで見たものと同じように見えますが、結果は異なります。

これが私のスクリプトです:(クエリ用ではなく、ファイル名を取得するためのものです)

for i in {0..10};
do
printf "x%010d"$i;
done

これは次のようなものになります:

x0000000000
x0000000001
x0000000002
x0000000003
x0000000004
x0000000005
x0000000006
x0000000007
x0000000008
x0000000009
x0000000010

しかし、代わりに次のように出てきます:

x00000000000
x00000000001
x00000000002
x00000000003
x00000000004
x00000000005
x00000000006
x00000000007
x00000000008
x00000000009
x000000000010

数字がゼロを置き換えるのではなく、純粋に数字にゼロを追加しているだけです。

意図せずに設定をオンにした場合、何か間違ったことをした場合、またはバグがある場合は、誰かに教えてもらえますか?

4

1 に答える 1

2

スペースが必要です。そうしないと、連結が発生します。

printf "x%010d" $i;
               ^
于 2013-01-15T23:14:54.327 に答える