有趣的shell(一)
循环100以内2的倍数 输出10给换行换颜色
#!/bin/bash
n=0 变量n的作用是换行
k=30 变量k的作用是给字体变颜色
for i in `seq 2 2 100` 循环每次循环把变量赋值给i seq 2 2 100 简单理解就是从2开始每次加2到100结束
do
n=$[$n+1] 每循环一次n就加1
echo -ne "\e[$[$k]m $i \e[0m" $k是字体颜色的值 输出 $i \e[$[$k]m 和 \e[0m 是转义序列,用于设置和重置字体颜色。
if [[ $[$n%10] == 0 ]]; then 这里判断循环了10次就输出一个 空
echo " " 输出一个空格,然后换行。
k=$[$k+1] 如果已经打印了10个数字,那么就使 k 的值加1,这样下一个数字就会有一个新的颜色。
fi
done
效果就是上面图片的样子了。
循环100以内2的倍数 不换行简单版
#!/bin/bash
k=40 这个变量的作用是设置字体的颜色
for i in `seq 2 2 100` 循环每次循环把变量赋值给i seq 2 2 100 简单理解就是从2开始每次加2到100结束
do
if [[ $k == 47 ]];then 它会判断 k 的值是否等于47等于47就执行下面的代码
k=$[$k - 7 ] 如果 k 的值等于47,那么就使 k 的值减7。这是为了确保颜色的值不会超过终端所能显示的最大值。
fi
echo -e "\e[$[$k];37m $i \e[0m" 打印出一个带有颜色的数字。$k是字体颜色的值 输出 $i
k=$[$k+1] k 的值加1,这样下一个数字就会有一个新的颜色
done
效果就是上面图片的样子了。
娱乐
一个好玩的根据上面这个代码的结果我们把相同颜色的数字拿出来一起输出
大致就是上面的样子 下面的是代码
#!/bin/bash
c=41
color=41
for x in `seq 1 1 6`
do
echo
for i in `seq 2 2 100`
do
s=`echo -e "\e[$[$color];37m $i \e[0m"`
if [[ $color == 47 ]];then
color=$[color-7]
fi
if [[ $color == $c ]];then
echo -n $s
fi
color=$[$color+1]
if [[ $i == 100 ]];then
color=41
fi
done
echo
c=$[$c+1]
done