首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在BASH中给单词数组加上边框

在BASH中给单词数组加上边框可以通过多种方式实现,这里提供一个简单的脚本示例,该脚本会接受一个单词数组作为输入,并输出带有边框的单词数组。

代码语言:txt
复制
#!/bin/bash

# 单词数组
words=("Hello" "World" "in" "a" "frame")

# 计算最长单词的长度
max_length=0
for word in "${words[@]}"; do
    if (( ${#word} > max_length )); then
        max_length=${#word}
    fi
done

# 计算边框的长度
border_length=$((max_length + 4))

# 打印上边框
printf "%${border_length}s\n" | tr ' ' '-'

# 打印单词数组
for word in "${words[@]}"; do
    printf "| %-${max_length}s |\n" "$word"
done

# 打印下边框
printf "%${border_length}s\n" | tr ' ' '-'

这个脚本首先计算数组中最长单词的长度,然后根据这个长度来确定边框的大小。接着,它打印出上边框,遍历数组打印每个单词,并在每个单词前后添加边框字符,最后打印下边框。

应用场景

这种脚本通常用于在终端或控制台中以美观的格式显示信息,例如在脚本的输出中提供更清晰的结构,或者在日志文件中标记重要的信息块。

遇到的问题及解决方法

如果在运行脚本时遇到单词之间或单词与边框之间的间距不一致的问题,可能是因为单词长度计算不准确或者打印格式设置不正确。确保使用printf命令时格式字符串正确,并且单词长度计算包括空格等特殊字符。

参考链接

  • Bash官方文档: https://www.gnu.org/software/bash/manual/bash.html#Arrays

这个脚本是一个基础的实现,你可以根据需要调整边框的样式和宽度,或者添加更多的功能,比如动态调整边框宽度以适应不同的终端窗口大小。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Shell脚本——内置命令

    一、内置命令 所谓 Shell 内置命令,就是由 Bash 自身提供的命令,而不是文件系统的某个可执行文件。...三、echo命令 echo 是一个 Shell 内建命令,用来终端输出字符串,并在最后默认加上换行符。...选项 说明 -a array 把读取的数据赋值数组 array,从下标 0 开始。...local 函数创建一个作用域受限的变量 logout 退出登录 shell mapfile 从 STDIN 读取数据行,并将其加入索引数组 popd 从目录栈删除记录 printf 使用格式化字符串显示文本...pushd 向目录栈添加一个目录 pwd 显示当前工作目录的路径名 read 从 STDIN 读取一行数据并将其赋一个变量 readarray 从 STDIN 读取数据行并将其放入索引数组 readonly

    2.1K10

    Linux Shell基础篇三 - 内置命令

    内置命令 Shell 内置命令,就是由 Bash Shell 自身提供的命令,而不是文件系统的可执行脚本文件。...local 函数创建一个作用域受限的变量 logout 退出登录 shell mapfile 从 STDIN 读取数据行,并将其加入索引数组 popd 从目录栈删除记录 printf 使用格式化字符串显示文本...pushd 向目录栈添加一个目录 pwd 显示当前工作目录的路径名 read 从 STDIN 读取一行数据并将其赋一个变量 readarray 从 STDIN 读取数据行并将其放入索引数组 readonly...unalias -a 删除当前Shell环境中所 临时删除当前Shell的别名, 如果想永久删除必须去配置文件手动删除 echo输出字符串 echo用于终端输出字符串,并在最后默认加上换行符。...options支持的参数如下: 选项 说明 -a array 把读取的数据赋值数组 array,从下标 0 开始。

    1.4K30

    Shell 内建命令:Shell 的内在魔力

    local函数创建一个作用域受限的变量logout退出登录 shellmapfile从 STDIN 读取数据行,并将其加入索引数组popd从目录栈删除记录printf使用格式化字符串显示文本pushd...向目录栈添加一个目录pwd显示当前工作目录的路径名read从 STDIN 读取一行数据并将其赋一个变量readarray从 STDIN 读取数据行并将其放入索引数组readonly从 STDIN 读取一行数据并将其赋一个不可修改的变量...为获取当前的 unix 时间戳设置别名 timestampalias timestamp='date +%s'删除别名# 删除 timestamp 别名unalias timestampecho 用于终端输出字符串默认末尾加上了换行符不换行.../bin/bash# 使用 read 命令多个变量赋值read -p "Enter your name, age and city ===> " name age cityecho "你的名字为:${...-g name Shell 函数内部创建全局变量。-p name显示指定变量的属性和值。-a name声明变量为普通数组。-A name声明变量为关联数组(支持索引下标为字符串)。

    11500

    BashShell变量

    3.1 设置局部用户定义变量 通过使用等号来设置局部环境变量,并其赋值,值可以是数值或者字符串。...3.4 读取环境变量 读取环境变量时,直接在变量前加上 $ 即可。 echo $HOME 当变量不存在是,Bash Shell 不会报错,而是当作空值处理。...var} 3.5 删除环境变量 Bash Shell 使用 unset 命令来删除环境变量。 unset var 和修改全局变量类似,子进程删除全局变量也无法反映到父进程。...GROUPS 含有当前用户属组列表的数组变量 histchars 控制历史记录扩展,最多可有 3 个字符 HISTCMD 当前命令历史记录的编号 HISTCONTROL 控制哪些命令留在历史记录列表...$@ 用双引号括起后,将所有命令参数当作字符串的多个独立单词保存,即看作多个个体 $?

    2.4K30

    快速掌握shell脚本数组,看这篇

    :输出和上面的相同 #数组的常见面试题 #利用bash for循环打印下面这句话字母数不大于5的单词 curl is powered by libcurl for all transfer-related...features #思路 #1.先把所有的单词放在数组里,然后依次进行判断 array=(curl is powered by libcurl for all transfer-related features...,然后使用wc -L进行统计,打印单词小于5的 #2.使用expr计算长度 for i in ${array[@]} do if [ `expr length $i` -lt 5 ];then...-ne 0 ];then #判断返回值,如果不等于0,就是访问失败,发邮件运维 content="$i access fail" echo "date:$DATE" | mail...smtp=smtp.qq.com set smtp-auth-user=guoke@qq.com set smtp-auth-password=doqimyktjmjphgcc #要注意这个密码是邮件设置那里获得的

    5.3K30

    【数据挖掘 | 可视化】 WordCloud 词云(附详细代码案例)

    开发环境 编辑器: jupyter notebook 解释器: python 3.7 七夕节,博主写了一篇为女友收集QQ聊天记录做可视化词云的文章获得广泛好评,一直有小伙伴希望能出一篇教程,今天他来啦...会被所图片大小替代,其次如果图片有白底(#ff 或者 #ffffff),那么此白底会被忽略,不会被渲染!...可以看到没有边框,此时我们想要边框加上 contour 属性 wcd_zh_hans = wordcloud.WordCloud(font_path='./.....社会从传统向现代的转型过程,人们的价值观念也发生了深刻的变化,同自身正在进行的奋斗相结合,同自身需要解决的时代问题相适应.可以说,社会主义核心价值观培育和践行的过程,也是转型社会重建现代价值秩序的过程....社会从传统向现\ 代的转型过程,人们的价值观念也发生了深刻的变化," jieba.lcut(text) 6.1处理分词后的字符串 使用.join将每个字符串' '连接起来,词云会自动去除标点符号

    1.2K10

    SHELL(bash)脚本编程一:变量

    、~/.bash_login和~/.profile,并执行找到的第一个可读文件(centos7系统是文件~/.bash_profile,此文件会进一步判断并执行文件~/.bashrc,然后再进一步判断并执行文件...当处于双引号取值时,每个结果被当成单独的单词,即 "$@" 等同于 "$1" "$2" ... "${n}"。 $# 表示当前进程的参数个数。 $?...当单词数大于变量数时,剩余的单词和分隔符会被赋值最后一个变量。当单词数小于变量数时,剩余的变量被赋空值。...ROOT < /etc/passwd [root@centos7 ~]# echo $ROOT root [root@centos7 ~]# 内置命令readarray和mapfile表示从标准输入读入数据并赋值索引数组...命令的执行过程,变量被其值所替换,替换的过程能够对应于各种变换。bash称对变量进行取值的过程为变量替换或变量扩展。 直接取值 #如果值包含空白字符,赋值时需要用引号引起来表示一个整体。

    2.7K40

    Shell脚本的read命令及其用法

    示例 下面列出了read命令的常见用法示例: 读取变量值并赋变量1987name: read 1987name 读取输入到第一个空格或回车,将第一个单词赋值变量first,剩余输入赋值变量last...: read first last 读取一行输入并赋值特定变量REPLY: read 将单词列表读入数组arrayname: read -a arrayname 打印提示文本并等待输入,将输入存储REPLY...: read -p "text" 允许输入包含反斜杠: read -r line 指定等待时间为3秒: read -t 3 从输入读取两个字符并存入变量var,无需按回车读取: read -n 2...,直到按回车结束,并将分别赋值三个变量: #read one two three 1 2 3 #控制台输入1 2 3,以空格隔开。...Enter your name: stephen #提示文本后输入"stephen" #echo $REPLY stephen 读取输入信息并将其视为数组赋值数组变量

    40810

    SHELL(bash)脚本编程六:执行流程

    将编辑缓冲区的内容交给bash之前,Readline会执行历史扩展(见这里),之后由bash负责将本条命令存储到历史列表并进入下一步骤。 非交互模式 非交互模式下,输入一般来自文件。...此时,bash使用C语言标准库的stdio来获得输入。 不像Readline那样需要实现各种功能,stdio的工作较为简单:缓冲文件内容并逐行提供输入bash处理。...)的结果,如果扩展处于双引号,则不会分割(变量或数组使用@的情况例外)。...bash利用环境变量IFS的值进行单词分割,如果扩展的结果单词包含IFS的任意字符,则被分割为多个单词。如果扩展的结果为空,则此单词被移除(引号的空值会被保留)。...我们的例子扩展的结果单词temp不包含IFS字符,所以没有进行单词分割。 注意如果没有上述扩展发生,也不会进行本阶段的单词分割。 路径扩展 单词分割结束后,bash扫描每个单词的字符*、?

    1.7K40

    CSS 常用样式集锦

    overline:添加上划线。 line-through:添加删除线。 二、首行缩进(text-indent) 作用:设置段落首行的缩进距离。 通常以长度单位(如 px、em)或百分比表示缩进量。...可选值: content-box:宽度和高度只计算内容区域,不包括边框和内边距。 border-box:宽度和高度包括内容、内边距和边框。...七、单词换行(word-break) 作用:控制单词何处断开以适应容器。 可选值: normal:使用默认的断行规则。 break-all:允许单词内任意位置断行。...keep-all:中文和英文单词都不能在中间断开。 八、空白处理(white-space) 作用:控制元素内的空白处理方式。 可选值: normal:默认值,合并空白并允许文本需要时换行。...nowrap:不换行,文本同一行显示。 pre:保留空白和换行,如同 HTML 的 标签。 九、文本截断(text-overflow) 作用:当文本溢出时,决定如何显示。

    9110

    【JavaEE初阶】CSS

    rgb色光三原色(红,绿,蓝)来按比例调色,前端rgb三个分量各分配了一个字节, 使用方法是设置color属性的值为rgb( 红色比例(0-255), 绿色比例(0-255),蓝色比例(0-255...实线边框 dashed 虚线边框dotted 点线边框 颜色: border-color 简写模式也可以: 值得注意的是:边框会撑大盒子 很多时候,我们不希望撑大盒子,因为这样可能会影响该元素和其他元素的相对位置...内边距 padding 设置内容和边框之间的距离. 默认内容是顶着边框来放置的....用 padding 来控制这个距离 可以四个方向都加上边距 padding-top padding-bottom padding-left padding-right 我们设置的时候可以通过上右下左...可以四个方向都加上边距 margin-top margin-bottom margin-left margin-right 7.弹性布局 我们知道块级元素是独占一行的, 默认是垂直方向排列的,

    20510

    Bash 编程易错总结大全

    如果你提前知道,file 和 target 文件名不会包含空格或者*号。否则,这行命令执行前经过单词拆分和文件名展开的时候会出现问题。...: event not found 这是因为,默认的交互式 Shell 环境下,Bash 发现感叹号时会执行历史命令展开。 Shell 脚本,这种行为是被禁止的,所以不会发生错误。...控制 shell 展开的顺序,命令行历史展开是单词拆分之前执行的 # 参见:Bash man 手册的History Expansion一节 exmark='!'...正确的语法是(没错要加上引号): for arg in "$@" # 或者更简单的写法 for arg 脚本遍历所有参数是一个再普遍不过的需求,所以 for arg 默认等价于 for arg...略过,原文的优化方法需要 Bash 4.2+ 以上的版本,手头没有这样的环境。

    2.9K10

    Css代码

    5px 5px /*分别为左上角,右上角,右下角,左下角*/建议也加上下面两段,即复制上面那段在前面分别加上-moz-和-webkit-(如-moz-border-radius:1px 1px 5px...正数值控制上边,负数值控制下边)*/④10px /*模糊值*/⑤#06C /*阴影颜色*/;建议也加上下面两段,即复制上面那段在前面分别加上-moz-和-webkit-(如-moz-box-shadow...{content:"显示文字";}说明:同上用于文本的首行设置特殊样式 .file_list:first-line{填通用代码}伪类元素获得焦点时向元素添加特殊的样式 a:focus{通用代码}★属性选择器...*/[属性~=值] {通用代码} /*用于选取属性值包含指定词汇的元素。*/[属性|=值] { 通用代码} /*用于选取带有以指定值开头的属性值的元素,该值必须是整个单词。...*/[属性*=值] {通用代码} /*匹配属性值包含指定值的每个元素。

    2K20

    前端那些让你头疼的英文单词

    下面我总结一些常用的英文单词,大家等地铁、上厕所等等零散的时间可以拿出手机看几眼,好事多磨,让我们多看它几眼,混个眼熟。...tr行 td单元格 th表头) 普通语义: b加粗 i倾斜 u下划线 s删除线 强调语义: strong 加粗 em倾斜 ins下划线 del删除线 下面这些都有上下左右四个属性: border 边框...jQuery是click) onmouseover鼠标滑过 onmouseout 鼠标离开 上面的内容如果哪一个单词忘记了具体的用法,可以点击链接查看具体内容:JavaScript入门 ---- for...和while都是循环时使用 array 数组 push 添加(数组结尾添加数据) pop 删除(数组结尾删除数据) splice 删除添加数据 reverse 倒置 indexOf 下标(某个数据在数组第一次出现的下标...,但凡是有两个功能的效果是相反的,肯定会有第三个功能,这个功能会集成那两个功能,这个功能的名称单词中肯定会有toggle) val (jQuery的val是专门来修改访问value属性值的) value

    2.3K20
    领券