【发布时间】:2016-03-03 01:36:01
【问题描述】:
我当前的 sn-p 代码如下所示...
#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”。我试过 printf 没有成功。
我用谷歌搜索了很多不同的方法,但没有看到我正在寻找的具体答案或我可以从中得出答案的变体。
感谢您的帮助。 顺便提一句。这是我写过的第一个代码,所以大家放轻松:)
【问题讨论】:
-
请使用实际数据/大小/等编辑您的 Q,以“使输出更具动态性并保持格式一致,无论屏幕大小或 var 结果如何”。例如,如果你有一个 80 列的屏幕,但有 120 个宽数据,你想发生什么? 但是基本上,
printf应该是您花时间研究的地方。一旦你理解了man printf文档的 20-30%(通过做小样本),其余的就很明显了。一些printf手册页甚至有一个标记为examples的部分。祝你好运。 -
由于您有一个
c标签,我会提到c语言中的printf是shellprintf函数的“父级”。我不确定您是否认为需要在c中编码才能使用printf,但您不需要。 (这个看起来不错,但功能可能会因 shell 和操作系统版本而异:ss64.com/bash/printf.html)。祝你好运。 -
这既与 C 无关,也与标记所定义的
printf无关(与 C 函数 C 相关)。 -
输出永远不会超过 80 col 我在我的其余代码中确定了这一点。我研究了 printf 并在 youtube Kris Occhipinti 和其他各种视频上观看了很多视频。列接缝是我需要帮助的语法,我会阅读更多关于你建议的页面,看看我能找到什么。谢谢
-
旁注:您可以在双引号字符串中使用变量引用,如
$var。您不必打开和关闭它们周围的琴弦。