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

Bash +特別な形式で印刷するためにPrintfを使用しますか?

Linuxマシンのリストでpingアクセスを確認するために、次のbashスクリプトを作成しました。

for M in $list
 do
   ping -q -c 1  "$M" >/dev/null 
          if [[ $? -eq 0 ]]
   then
    echo "($C) $MACHINE CONNECTION OK"
   else
    echo "($C) $MACHINE CONNECTION FAIL"
   fi

   let C=$C+1
done

これは印刷します:

 (1) linux643 CONNECTION OK
 (2) linux72 CONNECTION OK
 (3) linux862 CONNECTION OK
 (4) linux12 CONNECTION OK
 (5) linux88 CONNECTION OK
 (6) Unix_machinetru64 CONNECTION OK

printfを使用するにはどうすればよいですか 次の形式を出力するために、bashスクリプトで(または他のコマンド)?

 (1) linux643 ............ CONNECTION OK
 (2) linux72 ............. CONNECTION OK
 (3) linux862 ............ CONNECTION OK
 (4) linux12 ............. CONNECTION OK
 (5) linux88 ............. CONNECTION FAIL
 (6) Unix_machinetru64 ... CONNECTION OK

承認された回答:

パラメータ展開を使用して、%-sの結果のスペースを置き換えます ドットで:

#!/bin/bash
list=(localhost google.com nowhere)
C=1
for M in "${list[@]}"
do
    machine_indented=$(printf '%-20s' "$M")
    machine_indented=${machine_indented// /.}

    if ping -q -c 1  "$M" &>/dev/null ;  then
        printf "(%2d) %s CONNECTION OK\n" "$C" "$machine_indented"
    else
        printf "(%2d) %s CONNECTION FAIL\n" "$C" "$machine_indented"
    fi
    ((C=C+1))
done

Linux
  1. Bash の配列が見つかりません

  2. printf での色の使用

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

  1. 自動化のためのBashの使用

  2. printfを使用しているときに、シェルスクリプトで特殊文字をエスケープする方法は?

  3. Bashで1行コマンドを使用して、各サブディレクトリのサイズをリスト形式で表示しますか?

  1. Ssh –すでに確立されているSshチャネルを使用していますか?

  2. Bashは\xc3\ x89をÉに変換しますか?

  3. BashスクリプトでのLinuxスリープコマンドの使用