[英]Bash Shell echo/printf how to format output the right way
我當前的代碼片段看起來像這樣...
#Location of network config files
nfds="/etc/sysconfig/network-scripts/"
#Standard prefer of network config files
fil="ifcfg-"
#Array variable that feeds "$nic"
cards= array loop built from "nic=$(ls /sys/class/net | grep en)"
#Set color for Divice labile
div="\033[38;5;39m"
#Set Fix format and colour info
fix="\033[38;5;118m"
#Set color for OK
ok="\033[38;5;28m"
#Clear All font and color info
ctf="\033[0m"
function currentCardDefRoute(){
defr=$(grep DEFROUTE $nfds$fil$cards | cut -d = -f 2)
if [[ $defr = "yes" ]] || [[ $defr = "no" ]]; then
echo -e " "$div$cards$ctf"'s current default route is\t"$div$defr$ctf"\t\t\t\t ["$ok"OK"$ctf"]"
$st
else
echo -e " "$div$cards$ctf"'s current default route is \t"$fix"Missing"$ctf"\t\t\t ["$fix"PLEASE FIX"$ctf"]"
$st
fi
}
我在所有回顯行上縮進1個空格,以提高可讀性和一致的格式。 保持輸出可讀性和易於理解。
我正在尋找“ columns”選項,無論屏幕大小或var結果如何,輸出都將更加動態並具有一致的格式。 我也希望擺脫代碼中的所有“ \\ t”。 我嘗試過printf沒有成功。
我用許多不同的方式搜索了谷歌,但沒有看到我正在尋找的具體答案或可以從中得出答案的變體。
謝謝您的幫助。 順便說一句 這是我編寫的第一個代碼,所以請輕松一點:)
您可能要嘗試使用column實用程序。 它的唯一目的是將輸出格式化為列。 這可能比嘗試使用echo
或printf
做相同的事情要容易。
如果必須使用printf
,則需要使用格式說明符,例如"%25.25s"
。 第一個數字是“最小字段寬度”,在這種情況下,它導致輸出至少25個字符寬。 如果輸出較短,則用空格填充。 第二個數字表示要打印的最大字符數。 當這兩個數字相同時,它實際上表示將字符串打印在正好25個字符寬的字段中。 您可以使用它來強制變長字符串占用屏幕上相同的空間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.