gpt4 book ai didi

arrays - 在 BASH 中为单词数组添加边框

转载 作者:行者123 更新时间:2023-12-04 17:09:33 26 4
gpt4 key购买 nike

我一直在学习 Bash,我的老师做了一个让我感到困惑的练习。

我只是在努力在单词前面添加空格。

代码应考虑到每个单词中的字符数,并调整星号和间距的数量以使其始终对齐。

它应该是这样的:

***********
* Hello *
* World *
* good *
* etceter *
***********

我的代码:

#determine biggest word
words=("Hello" "World" "good" "etceter")
numchar=0
for i in ${words[@]}; do
if [ ${#i} -gt $numchar ]
then
numchar=${#i}
fi
done

#write *
a=-4
while [ $a -lt $numchar ]; do
printf "*"
((a++))
done

#write array
echo
for txt in ${words[@]}; do
space=$(($numchar-${#txt}))
s=0
echo "* $txt "
while [ $s -lt $space ]; do
printf " "
((s++))
printf "*"
done
done

#write *
a=-4
while [ $a -lt $numchar ]; do
printf "*"
((a++))
done

我正在努力处理#write 数组部分。

非常感谢!

最佳答案

您只需要进行一些更改。

#write array
echo
for txt in ${words[@]}; do
space=$(($numchar-${#txt}))
s=0
echo -n "* $txt " # -n added to not append a newline
while [ $s -lt $space ]; do
echo -n " " # switched from printf to echo (cosmetics)
((s++))
# printf "*" # commented out
done
echo "*" # added
done

您的 while 循环仅在当前单词后添加空格。结尾的 * 出现在结束这一行的循环之后。

关于arrays - 在 BASH 中为单词数组添加边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69780937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com