我有一个相当大的bash脚本,它读入了许多变量然后回显它们。我无法事先知道这些变量的长度,我不想缩短它们或以任何方式格式化它们 - 我只是希望它们以与读入它们相同的形式回显。
为了提高我的脚本输出的可读性,我回应了一些帮助眼睛的线,如下所示:
echo "--------------------------------"
echo "Here come some variables |"
echo " |"
echo "a = $a and b = $b"
echo " |"
echo "End of the script |"
echo "--------------------------------"
这将输出:
--------------------------------
Here come some variables |
|
a = 1.23e-19 and b = hello
|
End of the script |
--------------------------------
我想要实现的是echo
(或一些替代解决方案)来识别在打印变量后需要插入多少空白空间,以便它可以将垂直线|
与其余的,所以这个输出看起来像这样:
--------------------------------
Here come some variables |
|
a = 1.23e-19 and b = hello |
|
End of the script |
--------------------------------
它不需要只是echo
解决方案,但我会感谢简单。有什么想法吗?
答案 0 :(得分:2)
我现在无法访问Linux机器,但也可以在命令行上使用printf
。所以你可以使用printf " a = %10s and b= %10s |\n" "$a" $b"
。
您可以使用格式说明符来改善结果。
答案 1 :(得分:1)
使用printf
详细阐述Axel的回答可以做到这一点。如果线宽是线宽,那么:
a="1.23e-19"
b="hello"
linewidth=30
echo "--------------------------------"
echo "Here come some variables |"
echo " |"
printf "%-${linewidth}s |\n" "a = $a and b = $b"
echo " |"
echo "End of the script |"
echo "--------------------------------"
完全符合我的要求。输出:
--------------------------------
Here come some variables |
|
a = 1.23e-19 and b = hello |
|
End of the script |
--------------------------------