Pertanyaan Bagaimana cara mencetak beberapa teks dalam bash dan pad dengan spasi ke lebar tertentu?


Saya menggemakan beberapa teks dalam skrip bash dengan variabel di dalamnya, dan ingin memasukkan variabel itu sehingga akan selalu memiliki jumlah ruang yang tepat di sebelah kanan untuk menjaga agar sisa teks tetap selaras.

Inilah contoh yang saya inginkan:

Echoing random number 1080    [ OK ]
Echoing random number 443     [ OK ]
Echoing random number 34842   [ OK ]

Nilai numerik akan bervariasi panjang (mungkin tidak lebih dari 5 atau 6 digit).

Saya tahu bahwa printf dapat melakukan ini dan menyelaraskan variabel dengan melakukan hal berikut:

printf "Echoing random number %5s   [ OK ]" $RAND_NUM

Namun, ini akan memformat teks seperti ini:

Echoing random number  1080   [ OK ]
Echoing random number   443   [ OK ]
Echoing random number 34842   [ OK ]

Dan tentu saja hanya bergema dengan spasi tidak berfungsi:

echo "Echoing random number ${RAND_NUM}   [ OK ]"

Menghasilkan ini:

Echoing random number 1080   [ OK ]
Echoing random number 443   [ OK ]
Echoing random number 34842   [ OK ]

Apakah ada cara untuk mencetak teks seperti contoh pertama saya?


32
2018-06-14 14:48


asal


Jawaban:


Menggunakan - untuk menyejajarkan bidang.

printf "Echoing random number %-5s   [ OK ]" $RAND_NUM

Atau, jika Anda menggunakan sistem Linux Red Hat, ada fungsi yang telah ditetapkan yang akan mencetak hijau OK dan merah FAILED prompt (yang Anda lihat saat boot):

#!/bin/bash

. /etc/init.d/functions

echo -n "Frobbing widget:"
frob_widget && echo_success || echo_failure
echo

46
2018-06-14 14:57