我目前的代码片段看起来像这样......
#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个空格,以提高可读性和格式。保持输出的可读性和易于理解。
我向我们看了"列"选项并使输出更具动态性,并且无论屏幕大小或var结果如何,格式都是一致的。我也想在我的代码中摆脱所有" \ t" s。我试过printf没有成功。
我用Google搜索了很多不同的方式,没有看到具体的答案我正在寻找或者我可以从中找到答案。
感谢您的帮助。 顺便说一句。这是我写过的第一个代码,所以简单易行:)
答案 0 :(得分:0)
您可能想尝试使用column实用程序。它的唯一目的是将输出格式化为列。这可能比尝试使用echo
或printf
执行相同操作更容易。
如果您必须使用printf
,则您希望使用"%25.25s"
等格式说明符。第一个数字是"最小字段宽度",(在这种情况下)导致输出至少25个字符宽。如果输出较短,则用空格填充。第二个数字表示要打印的最大字符数。当这两个数字相同时,它实际上表示在字符串中打印出恰好25个字符宽的字符串。您可以使用此方法强制变长字符串占用屏幕上相同的空间量。