Shell脚本循环语句练习

1、打印出/etc目录下所有文件

[root@pup1 opt]# vim 1.sh 

for file in /etc/*
do echo $file
done

2、在/opt目录下有多个以.txt结尾的文件,需要将txt文件当中的内容合并到新的test.txt中

[root@pup1 opt]# vim 2.sh 

for file in /opt/*.txt
do
cat $file >> test.txt
done

3、ping测试整个网段,把网段当中可以ping通的ip地址保留到/opt/hosts.txt当中

[root@pup1 opt]# vim 3.sh 

for i in 20.0.0.{1..254}
do {
ping -c 3 -W 2 $ip$i &> /dev/null
        if [ $? -eq 0 ]
        then echo "$ip$i is onlie"
        echo $ip$i >> /opt/hosts.txt
        else echo "$ip$i is offline"
        fi
}&  //并行
done
wait  //运行完毕即刻退出

4、用户输入密码,脚本来判断密码是否正确,正确的密码是123456,若输入正确,提示
用户输入正确,连续输错三次,提示密码将被锁定

[root@pup1 opt]# vim 4.sh 

sum=0
while true
do
  read -p "请输入密码:" pa
  if [ $pa -eq 123456 ]
  then echo "输入正确"
  break
  else let sum++
      if [ $sum -eq 3 ]
      then echo "密码将被锁定"
      elif [ $sum -eq 4 ]
      then break
      fi
  echo "密码错误,请重新输入"
  fi
done

5、shell脚本做一个计算器,先实现能够整数运算(附加:实现小数运算)

[root@pup1 opt]# vim 5.sh 

for ((;;))
do
read -p "是否使用计算器y/n:" a
if [ $a == "y" ]
then
    read -p "输入需要计算的算式:" b c d
    sum=$[$b$c$d]
    echo "结果:$sum"

elif [ $a == "n" ]
then break
fi
done

6、用户名存放在users.txt文件中,每行一个,判断文件里的用户是否存在,若该用户存在,输出提示该用户已存在;用户存在但没设密码,则提示用户并让用户设置密码;若该用户不存在,提示用户输入密码,建立用户并设立其密码。

[root@pup1 opt]# vim 6.sh 

for i in $(cat /opt/users.txt)
do
  cat /etc/passwd | awk -F: '{print $1}' | grep "$i" &> /dev/null
  if [ $? -eq 0 ]
  then echo "${i}用户已存在"
  re=$(cat /etc/shadow | grep "$i" | awk -F: '{print $2}')
    if [ "$re" == "!!" -o -z "$re" ]
    then echo "该用户没有密码,需要创建密码"
    echo 123456 | passwd --stdin $i
    else echo "${i}已经有密码"
    fi
  else echo "用户不存在,创建用户"
     useradd $i
     echo 123456 | passwd --stdin $i
   fi
done

7、一家商店只卖五样东西,每次购买前提醒顾客是否进行商品选择,退出时计算选购商品总价

[root@pup1 opt]# vim shop.sh 

echo "欢迎光临小胡服饰店!"
echo "本店商品:"
echo "衣服 500"
echo "裤子 400"
echo "鞋子 300"
echo "帽子 150"
echo "袜子 50"
sum=0
for ((;;))
do
        read -p "选购商品请按1,结账请按2:" bo
        if [ $bo -eq 2 ]
        then break
        elif [ $bo -eq 1 ]
        then read -p "请输入所需商品名称:" th
        case $th in

        衣服)
                sum=$(($sum+500))
                echo "衣服添至购物车成功!"
        ;;

        裤子)
                sum=$(($sum+400))
                echo "裤子添至购物车成功!"
        ;;

        鞋子)
                sum=$(($sum+300))
                echo "鞋子添至购物车成功!"
        ;;

        帽子)
                sum=$(($sum+150))
                echo "帽子添至购物车成功!"
        ;;

        袜子)
                sum=$(($sum+50))
                echo "袜子添至购物车成功!"
        ;;
        esac
        fi
done
echo "$sum" 

8、计算从1到100所有整数的和(三种方式)

[root@pup1 opt]# vim 8.sh 

sum=0
for i in {1..100}
do
sum=$[$sum+$i]
done
echo "$sum"

sum=0
i=1
while [ $i -le 100 ]
do
  sum=$[$sum+$i]
  let i++
done
echo "$sum"

i=0
sum=0
until [ $i -gt 100 ]
do
  sum=$[$sum+$i]
  let i++
done
echo "$sum"

9、提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和

[root@pup1 opt]# vim 9.sh 

read -p "请输入一个小于100的整数:" num
sum=0
i=1
while [ $i -le $num ]
do
  sum=$[$sum+$i]
  let i++
done
echo "$sum"

10、求从1到100所有整数的偶数和、奇数和

[root@pup1 opt]# vim 10.sh 

sum1=0
sum2=0
for i in {1..100}
  do 
  if [ $(($i%2)) -eq 0 ]
  then 
  sum2=$[$sum2+$i]
  else
  sum1=$[$sum1+$i]
  let i++
  fi
done
echo "奇数和为$sum1"
echo "偶数和为$sum2"

11、将0到255 之间的十进制数转换成8位二进制数

[root@pup1 opt]# vim 11.sh 

read -p "请输入一个0-255之间的数字:" num
length=0  //用来补0
until [ $num -eq 0 ]
do
  j=$[$num%2]
  k="$j""$k"
  let length++
  num=$[$num/2]
done 

while [ $length -lt 8 ]
do
  k="0""$k"
let length++
done
echo "$k"

12、某山顶上有一颗香蕉树,一只猴子第一天从树上摘了若干根香蕉,当即就吃了一半,还不过瘾,又多吃了一根。第二天猴子又将剩下的香蕉吃了一半,禁不住诱惑,又多吃了一根香蕉。依此类推,每天都将剩余的香蕉吃一半后再多吃一根。到了第十天,猴子发现只剩一根香蕉了,请问这只猴子在第一天总共摘了多少根香蕉?

[root@pup1 opt]# vim 12.sh 

num=1
for i in {2..10}
do
num=$[($num+1)*2]
done
echo "$num"

13、批量改文件的后缀名

 姓名_学号_班级.jpg

 张三_01_03.jpg

 现在要求改成:

 学号_姓名.jpg

 01_张三.jpg

vim 3.sh

num=1
for i in $(cat /opt/name.txt)
do
echo  "$(awk -F '[_.]+' 'NR=='$num'{print $3}' name.txt)_$(awk -F '[_.]+' 'NR=='$num'{print $1}' name.txt).jpg"
let num++
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值