如何在Bash shell脚本中生成字符串周围的边框?

时间:2016-01-25 15:19:53

标签: bash

有没有办法使用-|等字符在Bash中围绕给定字符串生成边框并自动扩展为字符串的长度?给定的字符串不应包含EOF序列,并在处理时删除。

echo "------------------"
echo "| External Drive |"
echo "------------------"

2 个答案:

答案 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 |
------------------