• C高级day3(shell指令)


    一、Xmind整理:

    二、上课笔记整理:

    1.定义一个变量,把第11个外部参数的值,赋值给该变量并输出,再输出外部参数的个数

    1. var3=${11}
    2. echo $var3
    3. echo $#

    2.定义一个变量num,使用num获取root用户,在/etc/passwd中的行号,并输出

    1. num=`grep "^root" /etc/passwd -n | cut -d ":" -f 1`
    2. echo $num

    3.定义一个数组,使用外部参数给数组赋值,通过数组求外部参数的个数

    1. #!/bin/bash
    2. arr=($*) #把所有的外部参数赋值给数组arr
    3. echo ${#arr[*]}

    4.把家目录的下的所有文件名放到数组中,并记录家目录下文件的个数

    1. arr2=(`ls ~`) #把家目录的所有文件名赋值给数组arr1
    2. echo ${#arr2[*]}
    3. echo ${arr2[@]}

    5.尝试把read除了-a以外的参数结合起来使用

    1. #!/bin/bash
    2. #read -p "请输入一个变量" var
    3. #read -n 3 var
    4. #read -t 3 var
    5. #read -a arr
    6. read -sp "请输入一个变量" -n 3 -t 4 var
    7. #echo ${#arr[*]}
    8. echo $var

    6.终端输入两个三位数,将其中一个自增,把两个变量赋值给第二个变量相加并输出

    1. #!/bin/bash
    2. read -p "请输入两个变量" var1 var2 #如果同一行获取两个变量,变量中间放空格
    3. ((var1++)) #自增
    4. ((var2=var1+var2))
    5. echo $var1
    6. echo $var2
    7. ((var1=var1**3)) #对var1进行幂运算
    8. echo $var1

    7.求root用户的uid和ubuntu/linux用户gid相加的结果,比较这两个数的大小关系

    1. #!/bin/bash
    2. num1=`id -u root`
    3. num2=`id -g`
    4. echo $((num1+num2))
    5. #比较num1和num2的大小关系
    6. echo $((num1
    7. #比较num1和num2的大小关系
    8. echo $((num1

    8.计算当前目录下文件个数和家目录下文件个数的总和

    1. #!/bin/bash
    2. arr=(`ls`)
    3. arr1=(`ls ~`)
    4. brr=(`ls` `ls ~`) #把两个路径下的文件,放到同一个数组中
    5. crr=(${arr[*]} ${arr1[*]}) #先把两个路径下的文件分别存在不同数组中,再拼接两个数组
    6. num1=${#arr[*]}
    7. num2=${#arr1[*]}
    8. echo $[num1+num2]
    9. echo ${#brr[*]}
    10. echo ${#crr[*]}

    9.计算家目录下.c和.sh文件的和

    1. arr3=(`ls ~/*.c`)
    2. arr4=(`ls ~/*.sh`)
    3. #对前两行的数组计数
    4. num3=${#arr3[*]}
    5. num4=${#arr4[*]}
    6. echo $[num3+num4]

    10.终端读入两个数据,使用expr比较大小关系

    1. #!/bin/bash
    2. read -p "请输入两个变量" var1 var2
    3. expr $var1 \>= $var2

    11.计算/etc/group中,第20行组用户gid和第10行组用户gid的和

    1. #获取/etc/group中第20行用户的gid
    2. num1=`head -20 /etc/group | tail -1 | cut -d : -f 3`
    3. #获取/etc/group中第10行用户的gid
    4. num2=$(head -10 /etc/group | tail -1 | cut -d : -f 3)
    5. expr $num1 + $num2

    12.终端输入网址,如:www.hqyj.com,要求:

         接触网址每个部分,并放入数组中,不能使用cut,使用expr解决

    1. #!/bin/bash
    2. read -p "请输入一个网址" net
    3. len=`expr length $net` #网址的长度
    4. #找第一个.的位置
    5. pos1=`expr index $net .`
    6. #截取第一个.前面的所有子串
    7. arr[0]=`expr substr $net 1 $((pos1-1))`
    8. #为了找第二个.需要把后面的所有子串都截取出来
    9. str2=`expr substr $net $((pos1+1)) $len`
    10. #找到第二个.的位置
    11. pos2=`expr index $str2 .`
    12. arr[1]=`expr substr $str2 1 $((pos2-1))`
    13. arr[2]=`expr substr $str2 $((pos2+1)) $len`
    14. echo ${arr[*]}
  • 相关阅读:
    海康Visionmaster-全局脚本:通过全局脚本获取通讯输 入的参数并赋值给全局变量
    SpringBoot定时任务 - Spring自带的定时任务是如何实现的?有何注意点?
    LTE无线网络优化基础
    [附源码]java毕业设计校园志愿者服务管理系统
    利用Frp实现内网穿透(docker实现)
    (leetcode)二叉树最大深度
    LPDDR4详解
    郁金香2021年游戏辅助技术中级班(六)
    dotnet-cnblog|迁移Gitee图床图片或上传本地图片到博客园中
    【Android】AndroidStudio自动下载的Gradle大东西从系统盘里怎样转移出去
  • 原文地址:https://blog.csdn.net/m0_68542867/article/details/132798022