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

    一 变量

    [root@T_FOOT-Home2-ZZZ01 ~]# a=hello
    [root@T_FOOT-Home2-ZZZ01 ~]# echo $a
    hello
    [root@T_FOOT-Home2-ZZZ01 ~]# echo ${a}_world
    hello_world
    

    其实$a和${a}作用相同,但是为了防止字符串在拼接时,计算机无法区分变量和拼接的字符串,所以需要加上{}

    二 提取命令的输出

    [root@T_FOOT-Home2-ZZZ01 ~]# pwd
    /root
    [root@T_FOOT-Home2-ZZZ01 ~]# echo $(pwd)
    /root
    

    三 条件赋值(${var:-/=/?/+string})

    1 ${var:-string}:是指如果var为空,那么就输出string的值,如果var不为空,那么就输出var的值

    2 ${var:=string}:是指如果var为空,那么就输出string的值,并且把string的值赋给var,如果var不为空,那么就输出var的值

    3 ${var:?string}:是指如果var为空,那么就输出错误信息 -bash: var: string,如果var不为空,那么就输出var的值

    4 ${var:+string}:和${var:-string}相反,如果var为空,那么打印var的值,如果var不为空,那么就打印string的值

    四 $((exp))

    [root@T_FOOT-Home2-ZZZ01 ~]# echo $((3+2))
    5
    

    五 模式匹配替换

    ${var%pattern},${var%%pattern} 从右边开始匹配

    ${var#pattern},${var##pattern} 从左边开始匹配

    ${var%pattern},${var#pattern} 表示最短匹配,匹配到就停止

    ${var%%pattern},${var##pattern} 表示最长匹配

    通配符

    *:表示零个或多个任意字符

    ?:表示零个或一个字符

    [...]:表示匹配中括号里面到字符

    [!...]:表示不匹配括号里面到字符

    [root@T_FOOT-Home2-ZZZ01 ~]# f=a.tar.gz
    [root@T_FOOT-Home2-ZZZ01 ~]# echo ${f##*.}
    gz
    [root@T_FOOT-Home2-ZZZ01 ~]# echo ${f#*.}
    tar.gz
    [root@T_FOOT-Home2-ZZZ01 ~]# echo ${f%%.*}
    a
    [root@T_FOOT-Home2-ZZZ01 ~]# echo ${f%.*}
    a.tar  

    六 提取字节

    [root@T_FOOT-Home2-ZZZ01 ~]# echo ${f:0:2}
    a.
    

    获取f从下标为0的字节以后两个字节

    [root@T_FOOT-Home2-ZZZ01 ~]# echo  ${f:1}
    .tar.gz
    

    提取f从下标为1的字节之后到所有字节

    七 字符串替换

    ${file/dir/path}:将第一个dir 替换为path

    ${file//dir/path}:将全部dir 替换为 path

    ${#var}:可计算出变量值${var}的长度

    八 输出重定向

    echo "hello world" >> tempfile 将hello world复制到tempfile文件中,再打印出来

    九 输入重定向

    wc << flag

    其本质就是把输入到内容缓存下来作为命令输出

    十 流程控制

    if-then语句

    if xx1 then

     xx1s

    elif xx2 then

     xx2s

    else 

     xx3s

    fi

    十一 case

    case ... esac

    十二 for

    十三 while

    十四 until

    十五 break和continue

    十六 test命令

    参照连接 https://blog.csdn.net/aimarrow/article/details/80870180

  • 相关阅读:
    System.IO命名空间
    Java调用Http/Https接口(8,end)OkHttp调用Http/Https接口
    javascript上传组件
    在ubuntu下安装MonoDevelop
    Sql Server中Null+nvarchar结果为null
    利用iframe实现javascript无刷新载入整页
    C#序列化和反序列化
    vmware7.0下搭建ubuntuNat上网/C++开发环境
    javascript模态窗口Demo
    为博客添加在线台湾卫星电视播放功能
  • 原文地址:https://www.cnblogs.com/freeht/p/12133864.html
Copyright © 2011-2022 走看看