美文网首页
Linux基础Shell

Linux基础Shell

作者: 彳亍的心 | 来源:发表于2016-12-09 19:28 被阅读0次

    1.字符串
    (1)字符串的拼接
    引用字符串的值,并将多个字符串的值作为新的字符串赋予给新的变量,
    即 str=“$string $string2"
    (2)字符串长度
    lenth=$(string)
    注意:此时的#不再是注释,只表示计算字符的长度
    (3) 字符串的分割
    nstr=${string:a:b}
    把字符串string从第a个之后开始截取b个字符,赋予新的变量
    2.只读:readonly
    num=34
    echo $num
    num=88 #错误(error)
    echo $num
    只读变量的值不可更改!!!
    3.清楚变量的值
    num=333
    echo $num
    unset num
    echo $num
    注意:unset是清除变量的值。
    若变量未定义直接使用,其值为零
    4.两次强调
    (1)shell程序必须指定脚本的解释程序,即
    在shell脚本程序的第一行必须
    是: #!/bin/bash
    (2)空格问题
    变量赋值时,=两边不可有空格
    字符串的空格问题
    其他情况;尽量加空格
    5.权限问题
    r:可读 w:可写 x:可执行
    sudo chmod a+x filename
    sudo chmod u+x,g+x filename
    sudo chmod +x filename
    sudo chmod 777 filename
    6.从键盘获取变量值
    read 变量名
    read:在没有输入时,则一直等待输入。
    read 变量一 变量二 变量三
    此情况,将输入的第一个值赋予给变量一,第二个给变量二,剩余的全给变量三
    不建议使用read num1 num2 num3 这种获得变量值的方法
    建议:
    read num1
    read num2
    read numn
    7.shell的三大语句
    功能语句,说明型语句,结构分支语句
    (1)说明型语句
    以#开头的语句,至行末均为说明型语句,说明型语句,不解释执行(正行),即注释
    说明型语句的位置可以程序中的任何位置,可以放在解释语句之后,从#开始的部分到末行, #只能注释一行。
    (2)功能型语句
    系统命令,自写程序...
    (3)结构分支语句
    多路分支语句,循环语句,循环控制语句,测试语句条件语句
    结构性语句
    8.加、减、乘、除、去余(整数)
    expr let :针对整数做简单的加减乘除去余(整数)
    expr:
    sum=expr $num + $num1
    sum1=expr $num\*$num1
    sum=$(expr $num + $num1)
    sum1=$(expr $num*$num1)
    注意:空格问题
    let:
    let sum=num+num1
    let sum=num*num1
    乘法*:是去掉的原意,告诉解释器这是真的乘法!
    ``:取得结果集
    $()去的结果集
    9.条件测试语句
    test 测试语句
    [条件测试语句]:注意[]中的空格!!!
    -e file:如果file存在,则为真
    -d file:如果file为目录,则为真
    -f file:如果file常规文件,
    -r file:如果file可读,则为真
    -w file:如果file可写,则为真
    -x file:如果file可执行,则为真
    整数测试:
    -eq:是否等于
    -ne:是否不等于
    -gt:是否大于
    -ge:是否大于或等于
    -lt: 是否小于
    -le;是否小于或等于
    字符串比较:
    -z string:string长度是否为零
    -n string:若string非零,为真
    string==string1:是否相同
    string!=string1:是否不同
    逻辑操作符:
    &&:逻辑与
    事件一 && 事件二 :当事件一和事件二都为真,则为真
    -a:and
    -o:or
    常见变量:
    $?:命令执行后的返回状态,返回零表示执行成功
    $
    :所有参数列表
    $@:所有参数列表
    $#:传递到脚本的参数个数
    $0:可执行命令本身,不是位置参数
    $1~$n:分别表示第一个至第n个位置参数
    echo -n:不换行输出!
    9.if语句
    (1)if[条件]
    then
    命令
    fi
    (2)if[条件]
    then
    命令
    elif[条件]
    then
    命令
    else
    命令
    fi
    若表达式为真,则执行命令表1中的命令,退出否则执行命令表2中的语句退出if;
    (3)test 语句的用法:
    test命令测试的条件成立时,命令返回值为真,否则返回为假
    方式一:
    test $name -eq $1
    echo $?
    方式二:
    if test -f $filename
    then
    .....
    fi
    方式三:
    if [ -f $filename ]
    then
    ......
    fi
    10.case....esac
    多路分支语句case用于多重条件测试,语法结构清晰自然,
    语法结构为:
    case 字符串变量 in #case语句只能检测字符串变量
    模式1) #各模式中可用文件名元字符,以右括号结束
    命令表1
    ;; #命令表以单独的双分号结束,退出case语句
    模式2)
    命令表2
    ;;
    .......
    模式n)
    命令表n
    ;; #最后一个双分号行可以省略
    esac
    ( | 多重选择)
    (? 任意一个字符)
    (* 任意多个字符)
    ????? [a-z] a至z之间的任意字符
    11.for循环
    for....do...done
    当循环次数确定时,使用for循环语句来多次执行一条或一组命令。
    循环体由语句括号do和done来限定。
    格式为:
    for变量名 in 单词表
    do
    命令表
    done
    变量名依次去单词表的各个单词,每取一次单词,就执行一次
    循环体中的命令,循环次数由单词表中的单词数确定,命令表中的命令可以是一条,也可以是由分好或换行符分的多条。
    若单词表是命令行上的u哦有位置的参数时,可以在for语句中省略"in 单词表"部分!
    方法二:
    for((i=0;i<10;++i))
    注意:
    for循环值列表可以省略,默认从输入参数中获取
    //三角形
    12.while
    语法结构:
    while 命令或表达方式
    do
    命令表
    done
    while语句首先测试气候的命令或者表达方式的值,若过为真就执行一次
    循环体中的命令,然后在测试该命令或表达方式的值,执行循环体,直到该命令或表达方式为假时退出循环。
    while语句的退出状态为命令表中执行的最后一条命令的退出状态。
    13.break和continue
    break n #跳出n层
    continue语句则马上转到最近一层循环语句的下一轮循环上。
    continue n #跳转到最近n层循环语句的下一轮循环上。
    今天所学内容完全没有搞明白,像看电影一样走了个过场,不能这样!我花费了时间精力!我就要学会!

    相关文章

      网友评论

          本文标题:Linux基础Shell

          本文链接:https://www.haomeiwen.com/subject/focymttx.html