欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【大数据】|SHELL脚本编程基础---------字符串与循环的使用

程序员文章站 2024-03-15 16:11:05
...

1、字符串的截取方法
方法一:
${var:起始位置:长度} //编号从0开始
【大数据】|SHELL脚本编程基础---------字符串与循环的使用

方法二:
expr substr “$var” 起始位置 长度 //编号从1开始

方法三:
echo $var | cut -b 起始位置-结束位置 //编号从1开始

2、子串替换的方法
(1)只替换第一个匹配结果
${var/old/new} //old 被替换数据 new 替换数据

(2)替换全部匹配结果
${var//old/new} //old 被替换数据 new 替换数据

【大数据】|SHELL脚本编程基础---------字符串与循环的使用
3、字符串掐头
从左向右,最短匹配删除
${变量名#*关键词}

从左向右,最长匹配删除
${变量名##关键词}
【大数据】|SHELL脚本编程基础---------字符串与循环的使用
4、字符串去尾
从右向左,最短匹配删除
${变量名%关键词
}

从右向左,最长匹配删除
${变量名%%关键词*}
【大数据】|SHELL脚本编程基础---------字符串与循环的使用

练习:
1、批量改名:将txt结尾改为doc结尾

mkdir txt:cd txt
touch {a,b,c,d,e}.txt

#!/bin/bash
for FILE in *.txt
do
        mv $FILE ${FILE%.txt}.doc
done

【大数据】|SHELL脚本编程基础---------字符串与循环的使用

2、提示用户输入x,y 输出x~y的和
如果输入为空,则默认x为1,y为1

#!/bin/bash
read -p "请输入x的值:" x
read -p "请输入y的值:" y
x=${x:-1}
y=${y:-1}
i=1
sum=0
if [ $x -eq $y ] ;then
        sum=$[x+y]
        echo "从$x~$y的值为:$sum"
elif [ $x -le $y ] ;then
        while [ $x -le $y ]
        do
        let sum=$[sum+x]
        let x++
        done
        echo "从$x~$y的值为:$sum"
else
        while [ $x -ge $y ]
        do
        sum=$[sum+y]
        let y++
        done
        echo "从$x~$y的值为:$sum"
fi

使用for循环 批量检测主机存活状态

#!/bin/bash
for i in {1..255}
do
ping -c 2 -w 1 -i 0.2 192.168.0.$i &> /dev/null
if [ $? -eq 0 ] ;then
        echo "192.168.0.$i is ok"
else
        echo "192.168.0.$i is down"
fi
done

【大数据】|SHELL脚本编程基础---------字符串与循环的使用

while循环

//死循环

while:
do
执行命令
done

i=1
while:
do
   if [ $i -le 5 ] ;then
       echo $i
       let i+=2
   else
       exit
   fi    
done    

循环猜随机数

#!/bin/bash
num=$[RANDOM%100+1]  /生成一个随机数
while :
do
  read -p "电脑随机生成了一个随机数,猜猜看:" num1
if [ $num1 -eq $num ] ;then
        echo "你猜对了"
        exit
elif [ $num1 -gt $num ] ;then
        echo "你猜大了"
else
        echo "你猜小了"
fi
done

【大数据】|SHELL脚本编程基础---------字符串与循环的使用

.

fork炸弹:
.(){.|.&}:. //.为函数名

输出1~20之内6的倍数的平方

#!/bin/bash
i=0
while [ $i -le 20 ]
do
let i++
[ $[ i%6 ] -ne  0 ]&& continue
echo  $[ i*i ]
done

【大数据】|SHELL脚本编程基础---------字符串与循环的使用

相关标签: 字符串 shell