庆祝六一,特奉上礼物一份,shell脚本的相关练习

1.用shell脚i本for,while,until这三种方式写出输出1到100的所有偶数的方法。

for循环

#!/bin/bash
for ((i=2;i<=100;i+=2))
do
   echo $i
done

在这里插入图片描述
在这里插入图片描述
while循环

#!/bin/bash
i=2
while [ $i -le 100 ]
do
   echo $i
   i=$[$i+2]
done

在这里插入图片描述
在这里插入图片描述
until循环

#!/bin/bash
i=2
until [ $i -gt 100 ]
do
    echo $i
    let i+=2
done

在这里插入图片描述
在这里插入图片描述

2.假设变量i=20 * 5,请用shell脚本格式写出4种方法输出 i 的值。

#!/bin/bash

planA

i=$[20*5]
echo $i

planB
i=$((20*5))
echo $i

planC
let i=20*5
echo $i

planD
i=$(expr 20 \* 5)
echo $i

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
结果:
在这里插入图片描述
在这里插入图片描述

3.通过在命令行中执行./output 2i0 30 输出20+30的值,脚本中使用sum()函数封装代码并通过调用sum函数返回结果,用2种方法返回结果。

#!/bin/bash

#plan1
sum1 (){
   echo "第一个值为:$1"
   echo "第二个值为:$2"
   sum=$[$1+$2]
   echo $sum
}
sum1 $1 $2

#plan2
sum2 (){
     echo "第一个值为:$1"
     echo "第二个值为:$2"
     return $[$1+$2]
}
sum2 $1 $2
echo $?

在这里插入图片描述

4.先mkdir -p /root/bin/aa/bb/cc/dd ; touch /root/bin/aa/bb/cc/dd/abc.txt再用递归函数输出环境变量PATH所包含的所有目录以及其中的子目录和所有不可执行文件

#!/bin/bash

listdir() {
for a in $1/*
do
   if [ -d $a ];then
      echo "$2$a"
      listdir $a " $2 "
   elif [ ! -x $a ] && [ -f $a ];then
     echo "$2$a"
   fi

done
}

OLDIFS=$IFS
IFS=':'
for i in $PATH
do
   echo "$i"
   listdir $i " "
done
IFS=$OLDIFS

在这里插入图片描述
在这里插入图片描述

5.结合使用shell数组排序算法的方式把 123.txt 文件中的数字按照降序排序输出在同一行当中,并要求没有重复数字。

#!/bin/bash

c=0
for i in `awk '{print $0}' 123.txt`
do
    accounts[$c]=$i
    let c++
done
echo "转为数组:${accounts[*]}"

paixu (){

    echo "原数组顺序为:${accounts[*]}"
    length=${#accounts[*]}

       for ((i=1; i<$length-1; i++))
       do

          for ((j=0; j<$length-$i; j++))
          do
              first=${accounts[$j]}
              m=$j+1
              second=${accounts[$m]}
              if [ $first -lt $second ];then
                temp=${accounts[$j]}
                 accounts[$j]=$second
                 accounts[$m]=$temp
              fi

           done

done
echo "排序后新的数组为:${accounts[*]}"
}

paixu $accounts

accounts=($(echo ${accounts[*]} | sed 's/ /\n/g'| sort -r | uniq))
echo "去重后:"${accounts[*]}

在这里插入图片描述

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值