shell编程

  • /etc/shells 系统shell列表文件

  • 启动文件

    • 命令 文件名 典型用途
    • sh .profile 设置搜索路径,终端环境
    • bash .bashrc .bash_profile .profile 设置环境变量
      • .profile 环境变量 启动程序 HISTSIZE=1000 命令历史数
      • .bashrc 函数 命令别名
      • .bash_history
    • csh/tcsh .login .cshrc .tcshrc
  • 改变登录bash chsh

  • 输出 echo printf

  • 输入 read

  • #注释行

  • #!内核执行所需

  • 执行命令 ``和$()等效,将内容按shell命令执行并用输出替换这个字符串

  • stty -echo 不显示输入(输入密码)

  • stty echo 显示输入

  • 数值运算

    • 小数运算 bc命令
    • “数字 运算符 数字” | bc
    • 小数位的长度可采用scale=N
  • 整数运算

    • expr命令 expr 数字 运算符 数字 运算符 ±*/% *
    • $((数字运算符数字)) $[数字运算符数字] $((表达式))将表达式强制进行数值计算
    • let 数字一元运算符
    • expr或 [ ] 、 []、 [](())方式只进行运算,并不会改变变量的值;而let命令可以直接对变量值做运算再保存新的值
  • 布尔运算

    • &&且
    • ||或
    • test 表达式 [ 表达式 ] []test命令快捷方式 表达式两边至少要留一个空格
    • 字符串 数值
    • x = y x -eq y
    • x != y x -ne y
    • x < y x -lt y
    • x <= y x -le y
    • x > y x -gt y
    • x < y x -ge y
    • -n x x不为空
    • -z x x为空
    • 文件
    • -d file file存在且是目录
    • -e file file存在
    • -f file file存在且是普通文件
    • -r file 用户有file读权限
    • -s file file存在且不为空
    • -w file 用户有file写权限
    • file1 -nt file2 file1比file2新
    • file1 -ot file2 file1比file2旧
  • 选择结构

    if [] ;then
    elif [] ;then
    else
    fi
    
    if []
    then
    elif
    then
    else
    fi
    
    case 变量 in
    1)
    命令;;
    2)
    命令;;
    ...
    *)
    命令;;
    esac
    
  • 循环结构

    for 变量 in 值一 值二 ... ;do
    done
    
    for 变量 in 值一 值二 ...
    do
    done
    
    for ((i=0; i<=$count; i+=1)); do
    done
    
    数字序列
    {值一..值二}
    seq 值一 步长 值二
    
    while []
    do
    done
    
    while read line; do
    done
    
    until []
    do
    done
    
  • 函数

    function name(){
    }
    
    Name(){
    }
    
  • 跳转

    break
    
    continue
    
    exit [状态值默认0]
    
    shift
    
  • 子串截取的三种用法:

    • ${var:起始位置:长度}
    • expr substr “$var” 起始位置 长度
    • echo $var | cut -b 起始位置-结束位置
  • 路径分割:

    • 取目录位置:dirname “字符串”
    • 取文档的基本名称:basename “字符串”
  • 子串替换的两种用法:

    • 只替换第一个匹配结果:${var/old/new}
    • 替换全部匹配结果:${var//old/new}
  • 字符串掐头去尾:

    • 从左向右,最短匹配删除:${变量名#*关键词}
    • 从左向右,最长匹配删除:${变量名##*关键词}
    • 从右向左,最短匹配删除:${变量名%关键词*}
    • 从右向左,最长匹配删除:${变量名%%关键词*}
  • ${var:-word}判断变量是否存在,决定是否给变量赋初始值。

  • 建立数组的方法:

    • 格式1,整体赋值:数组名=(值1 值2 … … 值n)
    • 格式2,单个元素赋值:数组名[下标]=值
  • 查看数组元素的方法:

    • 获取单个数组元素:${数组名[下标]}
    • 获取所有数组元素:${数组名[@]}
    • 获取数组元素个数:${#数组名[@]}
    • 获取连续的多个数组元素:${数组名[@]:起始下标:元素个数}
    • 获取某个数组元素的长度:${#数组名[下标]}
    • 截取数组元素值的一部分:${数组名[下标]:起始下标:字符数}
  • 数组example=(aa ‘bb cc’ dd)

  • ${example[subscript]}访问数组,下标从0开始,下标和@指整个数组

  • *KaTeX parse error: Expected '}', got '#' at position 2: {#̲example[*]}和{#example[@]}表示数组元素的个数

  • 命令不会读取配置文件.profile .bash_profile,不读取环境变量,%表示命令字段的换行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值