zoukankan      html  css  js  c++  java
  • shell笔记

    ********空格
    1.定义变量,等号赋值时不能有空格
    var="/etc/passwd"
    2.条件测试字符串比较,等号前后要有空格
    [ $str1 = $str2 ]
    3.命令与选项间有空格
    4.管道|前后可有可无
    5.[是test的别名,其后必须有空格,]表示[的结束
    test expression 即 [ expression ]
    ********命令替换
    1.`cmd`
    2.$(cmd)
    允许将命令替换的结果赋值给变量
    var=$[$(cat /proc/meminfo | grep MemTotal | tr -d "MemTotal :kB")*256] 物理内存的1/4赋值给var
    ********整数运算
    1.$[ operation ]
    2.$(( operation ))
    ********改变IFS内部字段分隔符
    默认IFS是space,tab,newline在处理含有空格的数据(文件名)时可以替换默认分隔符
    IFSback=$IFS #保存默认分隔符
    IFS=$' ' #指定 为新的分隔符(搜索结果中含有空格)
    command......
    IFS=$IFSback
    1.IFS=$' '文本中的空白行不会输出(同理IFS=$' ')
    IFS=$" "文本中的空白行会输出
    2.其他符号可以直接赋值
    IFS=;:"?
    ******条件判断
    1.字符串判断(s1和s2)
    s1 = s2 s1和s2有相同内容和长度
    s1 != s2 s1和s2不同
    -n s1 s1长度非0
    -z s1 s1长度为0
    s1 > s2 s1大于s2
    s1 < s2 s1小于s2

    2.数字判断(i1和i2均为整数)
    i1 -eq i2 i1等于i2
    i1 -ne i2 i1不等于i2
    i1 -gt i2 i1大于i2
    i1 -ge i2 i1大于等于i2
    i1 -lt i2 i1小于i2
    i1 -le i2 i1小于等于i2

    3.文件判断
    -r fn 文件可读
    -w fn 文件可写
    -x fn 文件可执行
    -b fn 文件存在且是块文件
    -c fn 文件存在且是字符文件
    -d fn 文件存在且是目录
    -e fn 文件存在(Linux一切皆文件)
    -f fn 文件存在且是普通文件
    -g fn 文件存在且设置组id
    -G fn 文件存在且属于有效组id
    -h fn 文件存在且是符号链接
    -k fn 文件存在且设置sticky位
    -o fn 文件存在且属于有效用户
    -p fn 文件存在且是管道文件
    -s fn 文件存在且大小非0
    -t fn 文件描述符指定的设备是终端
    fn1 -nt fn2 fn1创建日期比fn2新
    fn1 -ot fn2 fn1创建日期比fn2旧

    4.复杂逻辑判断在[]内
    -a 与
    -o 或[ $yn = y -o $yn = Y ]
    ! 非

    5.复杂逻辑在[]外
    && 与
    || 或

    6.支持正则的字符串匹配[[]]
    [[ $var == regexpression ]] 变量var等于正则表达式
    [[ $var =~ regexpression ]] 变量var匹配正则表达式
    ******if
    1.expression为真(返回值为0)时执行then后面的command,then和if同行要求then前有;
    if [ expression ];then
    command
    fi
    2.expression1为真执行command1并结束,否则expression1为假expression2为真执行command2并结束,否则执行command3并结束
    if [ expression1 ];then
    command1
    elif [ expression2 ];then
    command2
    else
    command3
    fi
    ******for
    1.遍历list(数组,$var变量列表,$()命令替换结果集,通配符目录/home/*)
    for var in list
    do
    command
    done
    2.类似C的for循环,要求双括号
    for ((i=0;i<5;i++))
    do
    command
    done
    ********while
    expression为真执行command,command中要有改变expression的值避免陷入死循环
    while expression
    do
    command
    done
    ********until
    until expression
    do
    command
    done
    ********break
    终止最内层循环,break n终止由内到外第n层循环
    ********continue
    终止本次循环的剩余命令,继续开始下次循环
    ********数组
    1.定义
    array=(v0 v1 v2 v3...)
    array[0]=v0,array[1]=v1......
    array=($(command))
    2.取值
    ${array[$i]}
    3.长度
    ${#array[@]}
    ${#array[*]}
    4.遍历
    for i in ${array[*]}或${array[@]}
    do
    echo $i
    done
    5.删除
    unset array 清除整个数组
    unset array[$i] 清除单个元素
    6.替换
    ${array[@]/s1/s2} s2替换s1,不修改原数组,如需修改需用()赋值给新数组
    ${array[*]/s1/s2} s2替换s1,不修改原数组,如需修改需用()赋值给新数组
    7.分片
    ${array[@]:start:length} 截取start开始,长度length的新数组
    ${array[*]:start:length} 截取start开始,长度length的新数组
    ${array[*]:0:3}=(array[0] array[1] array[2])
    ********函数
    1.定义
    function function_name{
    command
    }
    function_name(){
    command
    }
    2.调用时传入的参数arg1,arg2在函数内部以$1,$2引用
    function_name arg1 arg2
    3.返回值
    只能用return语句返回一个0-255的整数
    ********变量扩展
    ********使用技巧
    1.用&&和||简化if else语句
    [ $num -lt 5 ] && echo "The number is less than 5" || echo "The number is great equal 5"
    2.vim中不需root权限保存编辑的文件
    :w !sudo tee %
    3.判断输入是y,Y,yes,YES

  • 相关阅读:
    龙井和碧螺春的功效与作用
    064 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 无参带返回值方法
    063 01 Android 零基础入门 01 Java基础语法 08 Java方法 01 无参无返回值方法
    062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用
    061 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 08 一维数组总结
    060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序
    059 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 06 增强型for循环
    058 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 05 案例:求数组元素的最大值
    057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和
    056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用
  • 原文地址:https://www.cnblogs.com/AiYS/p/9136406.html
Copyright © 2011-2022 走看看