zoukankan      html  css  js  c++  java
  • bash复习

    一、变量定义 (大小写敏感区分)

    a=1 //等号两端不能有空格

    向屏幕输出echo

    echo $a //$a 引用变量a

    字符串中引用变量,需要用双引号

    echo "chen $a"

    最严谨的写法,引用变量用{}

    echo ${a}_1 //会引起歧义时使用{}

    二、预定义变量 (Linux系统预先定义的变量)

    pwd //返回当前目录

    echo $PWD // PWD=`pwd`

    三、数组变量

    定义数组

    a=(1 2 3 4 5)

    输出数组:可以按索引下标输出单个元素,也可以切片

    echo ${a[*]} //echo ${a[@]} 效果相同

    输出数组的长度

    echo ${#a[*]}

    which命令,查找某个程序的安装位置(只能查找加到环境变量中的)

    which python

    touch创建一个文件(默认当前目录)

    touch 1.sh

    反引号,把命令执行的返回值赋给变量

    a=`ls`

    a=(`ls`) //返回值形成数组

    变量运算

    a=2;b=3

    echo $((a+b))

    echo $(($a+$b))

    echo $((a*5))

    a=5

    ((a=a+5))

    echo $a //a=10

    可以自增,或自减

    ((a++));echo $a

    除法:shell不支持浮点型运算,可以用以下方法

    awk 'BEGIN{print 2/3}'

    四、变量类型

    字符串 a="xx"

    数字 i=1323

    布尔 a=true b=false

    上一条命令的执行结果,输出0,时true,其它都是false

    a=2;b=4

    ((a<b))

    echo $?

    五、字符串操作

    s="hello from testerhome"

    切片

    echo ${s:6}

    echo ${s:6:4}

    获取长度

    echo ${#s}

    掐头

    echo ${s#hello}

    echo ${s#*o}

    //echo "${s#*o}" 这两个时不同的,后面这个第一个空格也会输出,双引号作为整体匹配

    -贪婪匹配

    echo "${s##*m}"

    去尾

    echo ${s%home}

    echo ${s%h*}

    echo ${s%%o*}

    替换

    echo ${s/hello/welcome}

    ls Videos 可以查看文件,或目录

    [ 2 -eq 2 ];echo $? 相等

    [ 2 -ne 3 ] 不等

    [ 3 -gt 1 ] 大于

    [ 3 -ge 3 ] 大于等于

    [ 2 -lt 4 ] 小于

    [ 2 -le 2 ] 小于等于

    [ 2 -ge 1 -a 3 -lt 2] // -a等同于&&,逻辑 “与”,false

    [ 2 -ge 1 -o 3 -lt 2] // -o等同于|| ,逻辑“或”,true

    逻辑“非”?

    六、内置判断

    -e file 如果文件存在,则结果为真

    -r file 如果文件可读,则结果为真

    七、逻辑控制

    结构体都有固定的格式

    1. if结构

    if [ -e demo.yml ];then echo exist;else echo not exist;fi

    echo "1" && echo "2" || echo "3" && echo "4" || echo "5" || echo "6" && echo "7" && echo "8" ||echo "9" //1 2 4 7 8 ; 前面以执行完成的结果,看成一个整体

    Ctrl+R 和 history的使用,查看之前输入的命令

    2.for循环:用于递归数组,还可以递归以空格隔开的字符串序列。或者某个命令的返回值

    for ((i=0;i<10;i++));do echo $i;done

    array=(2 4 5 6 7 8)

    for ((i=0;i<${#array[*]};i++));do echo $i;done

    for x in ${array[@]}; do echo $x;done //遍历数组并输出

    for x in `ls`; do echo $x;done //使用灵活

    s=(aa bb cc "sss dd");for x in ${s[@]};do echo $x;done

    //数组变量的引用,一定要用${s[@]}引用整个数组

    3.while循环

    i=0;while [ $i -lt 3 ];do echo $i;((i=i+1));done

    一行行读取文件内容

    while read line;do echo $line;done < /tmp/tmp

    cat file //查看文件

    vim file //创建新文件,并打开文件,可编辑保存

    read -p "enter:" a;echo $a

    4.退出控制

    for f in *;do echo $f;if [ -d $f ];then break;fi;done //break,跳出循环

    for f in *;do echo $f;if [ -f $f ];then echo $f is file;else continue;fi;done

    //continue,不满足条件,跳出当前循环,进行下一次循环

    八、shell运行环境概念

    1.bash是一个进程

    -bash下还可以再重新启动一个shell,这个shell是sub shell,原shell会复制自身给他

    -在sub shell中定义的变量,会随着sub shell的消亡而消失

    2.()子shell中运行

    3. {} 当前shell中运行

    4. $$ 当前脚本执行的pid

    5. & 后台执行

    6. $! 运行在后台的最后一个作业的pid

     

    学习的是为了更快、更好的解决问题,不要让学习本身成为问题!
  • 相关阅读:
    根据第三方库spire.pdf使用指定打印机打印pdf文件
    大批量GPS坐标转百度坐标
    maven settings.xml
    linux 权限
    hyper-v 创建ubuntu虚拟机设置静态ip
    mysql 复制
    nginx
    python函数定义
    Mysql索引浅析
    Mysql 数据库锁机制浅析
  • 原文地址:https://www.cnblogs.com/testerhome-yizhou2018/p/10124204.html
Copyright © 2011-2022 走看看