Shell脚本练习——文本相关

随机显示字体颜色

[root@wenzi data]#vim randomColor.sh 
#!/bin/bash
txt=wenzi
echo -e "\033[1;$[RANDOM%7+31]m$txt\033[0m"

获取随机8位字符串

[root@wenzi wenzi]# echo $RANDOM | md5sum | cut -c 1-8
2fdc98bb

[root@wenzi ~]$openssl rand -base64 9
oe5iZjluhy9o

[root@wenzi ~]$cat /proc/sys/kernel/random/uuid | cut -c 1-8
b2c6129b
说明:

cut -c 仅显示行中指定范围的字符

定义一个颜色输出字符串函数

[root@wenzi wenzi]# cat test.sh
#!/bin/bash
function echo_color() {
        if [ $1 == "red" ];then
                echo -e "\033[31;40m$2\033[0m"
        elif [ $1 == "green" ];then
                echo -e "\033[32;40m$2\033[0m"
        fi
}

echo_color $1 $2

将结果分别赋值给变量

一、
[root@wenzi wenzi]# cat test.sh
#!/bin/bash
str="echo Hello, World!"
eval $str

[root@wenzi wenzi]# ./test.sh
Hello, World!



二、
[root@wenzi wenzi]# cat test.sh
#!/bin/bash
for i in {1..3}; do
eval    a$i=$i
        echo "$a$i"
        echo ">>> $a1 $a2 $a3"
done

[root@wenzi wenzi]# ./test.sh
1
>>> 1
2
>>> 1 2
3
>>> 1 2 3


三、
[root@wenzi wenzi]# cat test.sh
#!/bin/bash
num=0
for i in `eval echo $*`;do
        let num+=1
        eval node${num}="$i"
done
echo $node1 $node2 $node3

[root@wenzi wenzi]# ./test.sh 192.168.28.1{1..2}
192.168.28.11 192.168.28.12

说明:

eval命令用于执行字符串中的命令,并将其结果作为Shell命令执行

打印彩虹

#!/bin/bash

declare -a ary
for i in `seq 40 49`;do
        ary[$i]=" "
        echo -en "\e[$i;5m ${ary[@]}\e[;0m"
done

declare -a ary
for s in `seq 1 10000`;do
        for i in `seq 40 49`;do
                ary[$i]=" "
                echo -en "\e[$i;5m ${ary[@]}\e[;0m"
        done
done

打印菱形

#!/bin/bash

for (( i = 1; i < 12; i++));do
        if [ $i -le 6 ];then
                for ((j = $((12-i)); j > i; j--));do
                        echo -n " "
                done

                for ((m = 1; m <= $((2*i-1)); m++));do
                        echo -n "* "
                done
                        echo ""

        elif [ $i -gt 6 ];then
                n=$((12-i))
                for ((j = $((12-n)); j > n; j--));do
                        echo -n " "
                done

                for ((m = 1; m <= $((2*n-1)); m++));do
                        echo -n "* "
                done
                        echo ""
        fi
done

显示进度条

#!/bin/bash
i=0
bar=''
index=0
arr=( "|" "/" "-" "\\" )

while [ $i -le 100 ];do
        let index=index%4
        printf "[%-100s][%d%%][\e[43;46;1m%c\e[0m]\r" "$bar" "$i" "${arr[$index]}"
        let i++
        let index++
        sleep 0.2
        bar+='#'
        clear
done

printf "\n"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值