嵌入式开发之linux基础第七天学习笔记 shell脚本编程(二)

时间:2021-03-28 19:24:48

linux基础第七天笔记

SHELL脚本编程(二)

语句:

具有特殊功能的语句

输入语句:read

输出语句:echo

控制语句:tput

测试语句:test 表达式

    测试表达式的正确与否

    0为真

    1为假

    可以使用$?获取test语句的结果

    test语句的三种方式:

    按照数值测试:

        -lt     小于

        -gt     大于

        -eq     等于

        -le     小于等于

        -ge     大于等于

        -ne     不等于

    测试文件:

        -f “name”     测试name是否是普通文件

        -d  “name”    测试name是否是文件夹

        “name1” -nt “name2” 测试name1是否比name2更新

        “name1” -ot “name2” 测试name1是否比name2更久

        -s “name”   测试name是否是一个文件,并且内容不为空

        -w  测试文件是否存在并可写

        -r  测试文件是否存在并可读

        -x  测试文件是否存在并可执行

        -l  测试文件是否为链接文件

    测试字符串

        =   测试字符串内容是否完全一致

        !=  测试字符串内容是否不一致

        -z str  测试字符串长度是否为0

        -n str  测试字符串长度是否不为0        

分支语句:

    if语句

    形式一:

    if  test语句

    then

        test语句为真的时候,执行的代码

    fi

    形式二:

    if  test语句

    then

        test语句为真的时候,执行的代码

    else

        test语句为假的时候,执行的代码

    fi

    形式三:

    if  test语句1

    then

        test1语句为真的时候,执行的代码

    elif test语句2

    then

        test2语句为真的时候,执行的代码

    else

        都不符合的时候执行的代码

    fi

expr 计算语句

    num1=10

    num2=20

    num3=`expr $num1 + $num2`

    echo $num3

` ` 运行   ` `中间的内容,并将结果返回

case语句

判断变量语句取值使用,大部分功能可以使用if实现

 case var in

   mode1)

       codes

       ;;

   mode2)

       codes

       ;;

   *)

       ;;

 esac

练习题一:

1.检测~/下是否有backup目录。如果没有,则新建

2.检测~/backup目录下,是否有当月月份为名的目录。如果没有,则新建

3.以上两个条件如果都满足的情况下,则将~/study/下月份为名的文件夹下日期为名的文件夹压缩,并移动到~/backup/月份为名的文件夹下

例:

    study目录的结构:

    ~/study/16-10/10-26

    backup目录的结构

    ~/backup/16-10/10-26.tar.gz

练习题二:

利用所学知识,编写一个支持四则运算的计算器,最少完成加减法和除法,乘法操作选做。如出现问题,考虑方向为转义字符


shell脚本之循环

for循环

所谓循环,既重复去做某一件事情

第一种格式:

filenames="asdf ewt jklj xczv"

for filename in $filenames

do

    echo $filename

done

filename会依次取filenames中的单词,直到取完所有单词为止

第二种形式:

for ((i=0 ; i<100 ; i++))

do

    echo $i

done

每次循环i会增长1,直到不满足i < 100的条件为止

循环共进行100