はじめに
バッシュprintf
コマンドは、フォーマットされた出力を作成するために使用されるツールです。これは、 printf()
に似たシェルビルトインです。 C / C ++、Java、PHP、およびその他のプログラミング言語で機能します。このコマンドを使用すると、フォーマットされたテキストと変数を標準出力で印刷できます。
printf
を使用する プログラミング時の効率と再利用性を高めるためにbashスクリプトで。
このチュートリアルでは、printf
の使用方法を学習します Linuxでコマンドを実行して、変数を出力し、出力をフォーマットします。

前提条件
- Linuxを実行しているマシン
- ターミナルへのアクセス( Ctrl + Alt + T )
Bashprintf構文
printf
コマンドは次の構文を受け入れます:
printf [-v var] [format specifiers] [arguments]
[-v var]
オプションの-v
フラグは、出力を [var]
に割り当てます 標準出力で出力する代わりに変数。
[format specifiers]
フォーマット指定子は、フォーマット指定子のフォーマット方法を決定する文字列です。次のセクションには、受け入れられる指定子のリストが含まれています。
[arguments]
引数には任意の値または変数を使用でき、 [format specifiers]
[arguments]
をポイントします 。フォーマット指定子よりも多くの引数がある場合、フォーマット文字列は最後の引数を解釈するまで再利用されます。
引数よりもフォーマット指定子が少ない場合、数値フォーマットはゼロに設定されます( 0
)、文字列形式は null
に設定されています (空)。
printf指定子
次の表は、一般的な printf
を示しています。 フォーマット指定子とその説明:
フォーマット指定子 | 説明 |
---|---|
%c | 引数を1文字として扱います。 |
%d | 入力を10進数(整数)の数値(基数10)として扱います。 |
%e | 入力を指数浮動小数点数として扱います。 |
%f | 入力を浮動小数点数として扱います。 |
%i | 入力を整数(基数10)として扱います。 |
%o | 入力を8進数(基数8)として扱います。 |
%s | 入力を文字列として扱います。 |
%u | 入力を符号なし10進数(整数)として扱います。 |
%x | 入力を16進数(基数16)として扱います。 |
%% | パーセント記号を印刷します。 |
%Wd | W を印刷します 整数X 数字幅。 |
%(format)T | strftime のフォーマット文字列としてformatを使用した結果の日時文字列を出力します 。対応する引数は、エポック(1970年1月1日、00:00)からの秒数、 -1 (現在の時刻)、または -2 (シェルの起動時間)。引数を指定しない場合は、現在の時刻がデフォルト値として使用されます。 |
\% | パーセント記号を印刷します。 |
\n | newline を出力します キャラクター。 |
\t | tab を印刷します キャラクター。 |
一部のフォーマット指定子は、アクションを変更するフォーマット修飾子を受け入れます。 %
の間に修飾子を入力します 文字とフォーマットを指定する文字。
使用可能なフォーマット修飾子は次のとおりです。
-
<N>
。最小フィールド幅を指定する数値を入力します。出力テキストが短い場合は、スペースが埋め込まれます。テキストが長い場合、フィールドが拡大します。 .
(ドット) 。フィールド幅修飾子と一緒に使用すると、フィールドは長いテキストに対して拡張されません。代わりに、テキストは切り捨てられます。-
-
。印刷されたテキストを左揃えにします。デフォルトの配置は正しいです。 -
0
。数字をスペースではなくゼロで埋めます。 -
<space>
。正の数をスペースで埋め、負の数をマイナスで埋めます(-
。 -
+
。署名されたすべての数値を印刷します(+
ポジティブの場合、-
ネガティブの場合)。 -
'
。 10進変換の場合、現在の LC_NUMERIC に従って、出力の整数部分に千のグループ化区切り文字を適用します。 ファイル。
Bashprintfの例
以下の例は、 printf
を使用して出力をフォーマットする一般的な使用例とさまざまな方法を示しています。 。
コマンドはターミナルで変数を出力できますが、コードの再利用を可能にし、自動化を容易にするため、bashスクリプトで使用する方が有益です。
改行文字で出力を区切る
echo
とは異なり 、 printf
を使用 フォーマット指定子なしで文字列または変数を出力するには、フォーマットされていないテキストを1行で出力します。改行文字を追加してエントリを区切るには、 \n
を指定します フォーマット指定子:

改行文字が印刷出力を区切るようになりました。
複数の変数を出力する
printf
を使用する 複数の変数を標準出力に出力します。以下の手順に従ってください:
1.ターミナルを開きます( Ctrl + Alt + T )、 vi / vimなどのテキストエディタを使用してbashスクリプトを作成します :
vi script.sh
2.次の行を入力します:
#!/bin/bash
printf "Enter your name:\n"
read name
printf "Enter your surname:\n"
read surname
printf 'Welcome: %s\n' "$name $surname"
%s
フォーマット文字列では、前の行で定義された変数を指し、 \n
printf
に指示します 改行文字を追加します。
3.スクリプトを保存して、 vi
を終了します 次のように入力します:
:wq
4.スクリプトを実行します:
bash script.sh
5. 2つの変数に要求された値を入力し、結果を確認します。

printf
コマンドは、入力を2つの変数に格納してから、変数を標準出力に出力します。
モックテーブルに変数を出力する
printf
を使用して、動的パディングを自動的に追加するか、変数の出力配置を変更します 。以下の手順に従って、モックテーブルに変数を出力します。
1.スクリプトファイルを作成します:
vi table.sh
2.次の行を入力して、スクリプトを保存します。
#!/bin/bash
var='hello'
printf '|%10s|\n' "$var"
%10
パイプシンボル内に10文字あることを確認し、変数出力にその長さの空白文字を埋め込みます。 s
入力変数を文字列として扱います。
3.スクリプトを実行して、結果を確認します。
bash table.sh

このコマンドは、パイプシンボルで囲まれた変数を出力し、デフォルトで右揃えにします。出力を左側に揃えるには、-
を追加します %
の後の修飾子 フォーマット文字列の文字:
#!/bin/bash
var='hello'
printf '|%-10s|\n' "$var"

小数点を追加
printf
を使用する %f
を使用 入力を浮動小数点数として扱い、小数点以下2桁の精度を追加するためのフォーマット指定子。以下の手順に従ってください:
1. bashスクリプトを作成します:
vi precision.sh
2.次の行を入力して、スクリプトを保存します。
#!/bin/bash
printf "Enter a decimal number:\n"
read number
printf "%5.2f\n" "$number"
3.スクリプトを実行します:
bash precision.sh

出力は、変数を小数点以下2桁に丸められた浮動小数点数として出力します。
データを変数に格納する
-v
を使用します printf
のフラグ データを標準出力に出力する代わりに、データを格納するためのシェル変数を割り当てる。
以下の手順に従ってください:
1. bashスクリプトを作成します:
vi variable.sh
2.次の行を入力して、スクリプトを保存します。
#!/bin/bash
printf -v var 'Welcome'
printf '%s\n' "$var"
3.スクリプトを実行します:
bash variable.sh

出力には、保存されている変数の内容が出力されます。
16進数の変換
%d
フォーマット指定子はprintf
に指示します 入力を10進数(整数)として扱います。指定子を使用して、16進数を10進数に変換するスクリプトを作成します。
以下の手順に従ってください:
1. bashスクリプトを作成します:
vi convert.sh
2.次の行を入力して、スクリプトを保存します。
#!/bin/bash
printf 'Enter a hexadecimal number:\n'
read number
printf "%d\n" "$number"
3.スクリプトを実行します:
bash convert.sh

スクリプトは、入力された16進数を10進数に変換します。
10進数を8進数に変換
%o
を使用します 10進数を8進数に変換するためのフォーマット指定子。以下の手順に従ってください:
1.スクリプトを作成します:
vi octal.sh
2.次の行を入力して、スクリプトを保存します。
#!/bin/bash
printf "Enter a decimal number:\n"
read number
printf "The octal number of "$number" is %o\n" "$number"
3.スクリプトを実行します:
bash octal.sh

スクリプトは、入力された10進値を8進値に変換します。
印刷日
printf
を利用するスクリプトを作成します 現在の日付を表示します。以下の手順に従ってください:
1.スクリプトを作成します:
vi datetime.sh
2.次の行を入力して、スクリプトを保存します。
#!/bin/bash
printf 'Today is %(%F)T\n' -1
%F
-1
は入力を浮動小数点数として扱いますが、 現在の日付を示します。
3.スクリプトを実行して、機能するかどうかを確認します。
bash datetime.sh

出力には、現在の日付と時刻が示されます。
数千にカンマを追加
数字を扱うときは、'
を使用してください 数千を示すためにコンマを追加することにより、出力を読みやすくするための修飾子。以下の手順に従ってください:
1. bashスクリプトを作成します:
vi decimals.sh
2.次の行を入力します:
#!/bin/bash
printf "Enter a number:\n"
read number
printf "%'d\n" $number
3.スクリプトを実行します:
bash decimals.sh

数値を入力した後、スクリプトは printf
を利用します 入力値にコンマを自動的に追加します。
文字ASCIIコードを取得
printf
を使用するスクリプトを作成します 入力文字のASCIIを出力します 価値。以下の手順に従ってください:
1.スクリプトを作成します:
vi character.sh
2.次の行を入力して、スクリプトを保存します。
#!/bin/bash
printf "Enter a character to get character code:\n"
read character
printf "%d\n" "'$character"
3.スクリプトを実行し、機能するかどうかをテストします。
bash character.sh

スクリプトは入力文字のASCII値を出力します。