是否有办法在Bash中使用像-
和|
这样的字符生成给定字符串周围的边框,并自动扩展到字符串的长度?给定的字符串不应包含EOF序列,并在处理时被删除。
echo "------------------"
echo "| External Drive |"
echo "------------------"
是否有办法在Bash中使用像-
和|
这样的字符生成给定字符串周围的边框,并自动扩展到字符串的长度?给定的字符串不应包含EOF序列,并在处理时被删除。
echo "------------------"
echo "| External Drive |"
echo "------------------"
我在另一个Stack Exchange网站上找到了一个解决方案,它使用的是sed。与这个问题的措辞略有不同。
border()
{
title="| $1 |"
edge=$(echo "$title" | sed 's/./-/g')
echo "$edge"
echo "$title"
echo "$edge"
}
border "External Drive"
结果
------------------
| External Drive |
------------------
border () {
local str="$*" # Put all arguments into single string
local len=${#str}
local i
for ((i = 0; i < len + 4; ++i)); do
printf '-'
done
printf '\n| %s |\n' "$str"
for ((i = 0; i < len + 4; ++i)); do
printf '-'
done
echo
}
$ border multiple words
------------------
| multiple words |
------------------