zoukankan      html  css  js  c++  java
  • shell--基本语法

    继续运算符模块。

    part1 算术运算符

    +

    -

    *

    /

    %

    part2 关系操作

    与(())连用

    <

    >

    <=

    >=

    ==

    !=

    &&

    ||

     

    注意:一个等号是赋值操作,两个等号是判断

    test命令相关,[]可以达到一样的效果

    part3 赋值运算符

    =

    +=

    *=

    /=

    %=

    part4 shell里的所有计算器
    $[] (()) $(()) expr bc bc -l

    浮点运算:yum install bc -y

    part5 测试操作

    命令执行后会返回到一个系统变量中 $?
    如果$?值为0 表示命令执行成功 否则为失败

    测试命令 test [ ] [[ ]] (( ))
    打开man test 逐一介绍每个参数

    part5-1、测试文件状态
    -d 目录
    -s 文件长度 > 0、非空
    -f 正规文件
    -w 可写

    -r 可读

    -x 可执行

    -L 符号连接

    -u 文件有 suid 位设置

    part5-2、字符串测试
    = 两个字符串相等
    != 两个字符串不相等
    -z 空串
    -n 非空串

    part5-3、测试数值
    -eq 等于
    -ne 不等于
    -gt 大于
    -lt 小于
    -ge 大于等于
    -le 小于等于

    part5-4、拓展测试符号 [[ ]] (())
    数字测试符号
    # [ 10 < 2 ] # 语法错误
    -bash: 2: 没有那个文件或目录
    #

    # [[ 2 > 10 ]] # 结果错误
    # echo $?
    0
    # [[ 20 > 10 ]] # 正确
    # echo $?
    0
    # (( 10 < 20 ))
    # echo $?
    0

    字符测试
    # [ "aa" = "aa" ]
    # echo $?
    0
    # [[ "aa" = "aa" ]]
    # echo $?
    0
    # (( "aa" = "aa" )) #结果错误
    # echo $?
    1
    混合测试
    # [ a = a -a 10 < 20 ]
    -bash: 20: 没有那个文件或目录
    [root@seker ~]# [[ a = a -a 10 < 20 ]]
    -bash: syntax error in conditional expression
    -bash: syntax error near `-a'
    [root@seker ~]# [[ a = a && 10 < 20 ]]
    [root@seker ~]# echo $?
    0
    [root@seker ~]# [[ a = a || 10 < 20 ]]
    [root@seker ~]# echo $?
    0
    [root@seker ~]# (( a = a || 10 < 20 ))
    [root@seker ~]# echo $?
    0
    [root@seker ~]# (( a = a && 10 < 20 ))
    [root@seker ~]# echo $?
    0
    [root@seker ~]#
    结论:
    比较数字,使用(( ))
    其他测试使用 [[ ]]
    包含数字比较的混合测试,使用[[ expr1 && expr2 ]] (( expr1 || expr2 ))

    两个文件的比较
    FILE1 -ef FILE2
    测试两个文件是否是相同的inode
    有时为了找到同一个INODE号的文件 更倾向于使用 find 命令的 -inum 或 --samefile

    FILE1 -nt FILE2
    FILE1 is newer (modification date) than FILE2

    FILE1 -ot FILE2
    FILE1 is older than FILE2

    四 流程控制

    part1分支结构

    if 测试中还可以执行命令 根据命令的返回值做判断
    # if cd / ;then echo Y ;fi
    # if grep -q root /etc/passwd ;then echo Y ;fi

    part2 循环结构

    part2-1 while循环

    while (条件)

    do
    动作
    done

    需要无限循环时我们会选择while :

    练习:
    1.while死循环

    2.wihle和read实现逐行处理

    part2-2 for循环

    shell格式的for

    for i in {1..10}
    do
    echo $i
    done

    shell的for,常用in列表方式

    小例子:

    检查内网存活的IP

       

    多个for嵌套
    嵌套for中使用

    continue:默认退出本次循环

    break:默认退出本层循环

    其他

    可视块:Ctrl+v  shift +a/i/o 输入内容,比如空格,然后esc,优化视觉效果

  • 相关阅读:
    MySQL(一)序
    Mockito 小结
    如何入门一个开源软件
    面经
    琐碎的想法(四)键盘布局、快捷键的由来
    琐碎的想法(二)网络协议——人们给计算机的一组“约定”
    Java源码赏析(六)Class<T> 类
    Java随谈(五)Java常见的语法糖
    Java随谈(四)JDK对并发的支持
    Event Loop和宏任务微任务
  • 原文地址:https://www.cnblogs.com/metianzing/p/6946872.html
Copyright © 2011-2022 走看看