Shell相关知识

佐手、 提交于 2019-12-17 00:19:54

Shell数组

创建空数组

   arr1=()
向数组中添加值的方法
    1.创建非空数组:arr2=(赋值)
    2.arr[0]=赋值
获取数组中的元素
    echo "数组的元素为:${arr[0]}"

    使用@ 或 * 可以获取数组中的所有元素
    echo "数组的元素为:${arr[*]}"
    echo "数组的元素为:${arr[@]}"
获取数组的长度
    echo "数组的长度为:${#arr[*]}"
    echo "数组的长度为:${#arr[@]}"
遍历数组
    arr=(赋值)
    for i in ${arr[*]}
    do
        echo $i
    done

Shell运算符

=、-、*、/、%
使用echo、expr使用运算符
    echo $[a+b]或echo $((a+b))(不需要有空格)
    expr $a + $b(需要有空格)
以上两种方法只支持整数运算

条件判断

整数之间比较地运算符
    -le    小于等于 
    -ne    不等 
    -lt    小于 
    -gt    大于
    -eq    等于
    -ge    大于等于
文件权限的判断
    -r 文件名    可读
    -w 文件名    可写
    -x 文件名    可执行
按照文件类型判断
    -f    文件存在并且是一个常规的文件
    -e    文件存在
    -d    文件存在并是一个目录

流程控制

if判断
    基本语法:
    if [ 条件判断式 ];then 
      程序 
    fi 
    或者 
    if [ 条件判断式 ] 
     then 
        程序 
    elif [ 条件判断式 ]
       then
              程序
    else
          程序
    fi
    注意事项:
     (1)[ 条件判断式 ],中括号和条件判断式之间必须有空格
     (2)if后要有空格

case语句
    基本语法:
    case $变量名 in 
     "值1") 
        如果变量的值等于值1,则执行程序1 
        ;; 
      "值2") 
        如果变量的值等于值2,则执行程序2 
        ;; 
      …省略其他分支… 
      *) 
        如果变量的值都不是以上的值,则执行此程序 
        ;; 
    esac
     注意事项:
     (1)case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
     (2)双分号“;;”表示命令序列结束,相当于java中的break。
     (3)最后的“*)”表示默认模式,相当于java中的default。
for循环
    基本语法1:
    for (( 初始值;循环控制条件;变量变化 )) 
      do 
         程序 
      done

    基本语法2:
    for 变量 in 值1 值2 值3… 
      do 
        程序 
      done
while循环
    基本语法:
    while[条件判断式]
        do
           程序
        done

read读取控制台输入

是一个小工具
基本语法:read(选项)(参数)
选项:
    -p    指定读取值时的提示符
    -t    指定读取值时等待的时间
参数:
    变量    指定读取的变量名

函数

系统函数
    语法:
        basename
        dirname(获取绝对路径)
自定义函数
    语法:
        [function] 函数名[()]
        {
        Action;
        [return int]
        }
       分为两种:带参与不带参

Shell工具

cut
    用法:
       cut[选项参数] filename

    选项参数        功能
       -f        列号,提取第几列
       -d        分割符,按照指定分隔符分割列
       -c        制定具体的字符
sed
    用法:
       sed [选项参数] ‘command’filename

    选项参数        功能
       -e        直接在指令列模式上进行sed的运动编辑
       -i        直接编辑文件

    命令功能描述:
    命令        功能描述
       a        新增,a的后面可以接字串,在下一行出现
       d        删除
       s        查找并替换
awk
    用法:
       awk [选项参数] ‘pattern1{action1}  pattern2{action2}...’ filename
       pattern:表示AWK在数据中查找的内容,就是匹配模式
       action:在找到匹配内容时所执行的一系列命令

    选项参数        功能
       -F        指定输入文件拆分割符
       -v        赋值一个用户定义变量

    awk的内置变量
    变量        说明
    DILENAME    文件名
    NR        已读的记录数
    NF        浏览记录的域的个数
sort
    基本语法:
    选项        说明
    -n        依照数值的大小排序
    -r        以相反的顺序来排序
    -t        设置排序时所用的分割字符
    -k        指定需要排序的列
       

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!