Bash

如何列印具有填充中心對齊的變數?

  • September 19, 2021

如何列印$myvar填充,使其位於終端的中心,並且任一側都=位於螢幕的邊緣?

我在 stackexchange 網路上找到了兩條資訊,這些資訊幫助我得出了這個有效的答案:

但是,此答案中的程式碼是我自己的。

如果您想要更多詳細資訊,請查看編輯歷史記錄;我已經刪除了所有的雜亂無章和“沿途的步驟”。


我認為最好的方法是:

center() {
 termwidth="$(tput cols)"
 padding="$(printf '%0.1s' ={1..500})"
 printf '%*.*s %s %*.*s\n' 0 "$(((termwidth-2-${#1})/2))" "$padding" "$1" 0 "$(((termwidth-1-${#1})/2))" "$padding"
}
center "Something I want to print"

在 80 列寬的終端上輸出:

========================== Something I want to print ===========================

請注意,填充不必是單個字元;實際上padding變數不是,在上面的程式碼中它有 500 個字元長。您可以通過僅更改以下行來使用其他形式的填充padding

padding="$(printf '%0.2s' ^v{1..500})"

結果是:

^v^v^v^v^v^v^v^v^v^v^v^v^v Something I want to print ^v^v^v^v^v^v^v^v^v^v^v^v^v^

另一個方便的用途是:

clear && center "This is my header"

引用自:https://unix.stackexchange.com/questions/267729