GNU/Linux >> Linux の 問題 >  >> Linux

Bashprintf-変数をBashで印刷する方法

はじめに

バッシュ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値を出力します。


Linux
  1. Bashが色を印刷できるかどうかを確認する方法は?

  2. Bashで変数が数値かどうかをテストするにはどうすればよいですか?

  3. アセンブリNASMで数値を出力するには?

  1. Bashを使用して整数をバイナリファイルに書き込む方法は?

  2. bash プロンプトにアイコンを追加する方法

  3. Bash変数の文字数をカウントするにはどうすればよいですか

  1. パッド入りの中央揃えで変数を印刷するにはどうすればよいですか?

  2. 各50行から15行目と25行目を印刷する方法は?

  3. Bash - printf を使用して複数行の文字列 ('\n' を含む) を印刷する方法