【大数据】|SHELL脚本编程基础---------字符串与循环的使用
程序员文章站
2024-03-15 16:11:05
...
1、字符串的截取方法
方法一:
${var:起始位置:长度} //编号从0开始
方法二:
expr substr “$var” 起始位置 长度 //编号从1开始
方法三:
echo $var | cut -b 起始位置-结束位置 //编号从1开始
2、子串替换的方法
(1)只替换第一个匹配结果
${var/old/new} //old 被替换数据 new 替换数据
(2)替换全部匹配结果
${var//old/new} //old 被替换数据 new 替换数据
3、字符串掐头
从左向右,最短匹配删除
${变量名#*关键词}
从左向右,最长匹配删除
${变量名##关键词}
4、字符串去尾
从右向左,最短匹配删除
${变量名%关键词}
从右向左,最长匹配删除
${变量名%%关键词*}
练习:
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
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
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
.
fork炸弹:
.(){.|.&}:. //.为函数名
输出1~20之内6的倍数的平方
#!/bin/bash
i=0
while [ $i -le 20 ]
do
let i++
[ $[ i%6 ] -ne 0 ]&& continue
echo $[ i*i ]
done