有没有办法使用-
和|
等字符在Bash中围绕给定字符串生成边框并自动扩展为字符串的长度?给定的字符串不应包含EOF序列,并在处理时删除。
echo "------------------"
echo "| External Drive |"
echo "------------------"
答案 0 :(得分:3)
我在另一个使用sed工作的Stack Exchange网站上找到了solution。这个问题有不同的措辞。
border()
{
title="| $1 |"
edge=$(echo "$title" | sed 's/./-/g')
echo "$edge"
echo "$title"
echo "$edge"
}
border "External Drive"
结果
------------------
| External Drive |
------------------
答案 1 :(得分:2)
没有外部工具的小功能:
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| $str |\n"
for (( i = 0; i < len + 4; ++i )); do
printf '-'
done
echo
}
例如,如果将其添加到您的.bashrc
,则可以在不引用的情况下调用它:
$ border multiple words
------------------
| multiple words |
------------------