shell编程
创始人
2024-02-04 15:45:26
0
  • /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执行文件命令
    • bash [-x] 文件 开子进程
    • source 文件 . 文件 不开子进程
  • #注释行

  • #!内核执行所需

  • 变量

    • 变量赋值不用$,访问值时用$,赋值时=两边不留空格,双引号括起来的变量被值替换
    • {}标记变量开始和结束,变量名区分大小写,所有bash变量的值变量不区分类型,统一为字符串
    • 变量默认全局变量,局部变量用local声明
    • set所有变量
    • env环境变量
    • 环境变量自动导入bash变量空间
    • export 变量 将一个shell变量提升为环境变量
    • unset
  • 默认变量

    • $0调用文件名
    • $1第一个命令行参数$2$3…
    • $#参数个数(不包括$0)
    • $*全部参数(不包括$0)
    • $$进程PID号
    • $?命令执行后返回状态
  • 执行命令 ``和$()等效,将内容按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
    fiif []
    then
    elif
    then
    else
    ficase 变量 in
    1)
    命令;;
    2)
    命令;;
    ...
    *)
    命令;;
    esac
    
  • 循环结构

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

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

    breakcontinueexit [状态值默认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,不读取环境变量,%表示命令字段的换行

相关内容

热门资讯

无悔的选择作文 无悔的选择作文(精选20篇)  在日常生活或是工作学习中,大家或多或少都会接触过作文吧,作文根据体裁...
沙滩,大海作文 沙滩,大海作文(精选15篇)  在平日的学习、工作和生活里,大家都跟作文打过交道吧,作文要求篇章结构...
以感恩为题的作文 以感恩为题的作文(通用26篇)  在日常的学习、工作、生活中,大家都有写作文的经历,对作文很是熟悉吧...
游普陀山作文 游普陀山作文游普陀山作文1今天我们决定去普陀山玩。早晨,我们驾车到了目的地,买了船票,好多人排队等了...
写父亲的作文 写父亲的作文(精选60篇)  在日复一日的学习、工作或生活中,大家都不可避免地要接触到作文吧,借助作...
我要自由作文 我要自由作文(4篇)  在平平淡淡的学习、工作、生活中,大家都不可避免地会接触到作文吧,通过作文可以...
难忘的旋律作文800字 难忘的旋律作文800字  "歌曲最重要的是用情感打动人,很多听众和我说他们感觉《懂你》唱给恋人也合适...
玩的作文400字 关于玩的作文400字(通用30篇)  在日常学习、工作抑或是生活中,大家都经常看到作文的身影吧,借助...
随笔作文 随笔作文随笔我不知道梦想是什么颜色,也许它自有自己的颜色,我不知道风往哪里吹,也许它自有自己的方向,...
曾经那个少年作文 曾经那个少年作文(精选22篇)  在现实生活或工作学习中,大家都跟作文打过交道吧,通过作文可以把我们...
垃圾分类的重要性优秀作文40... 垃圾分类的重要性优秀作文400字  我是一个垃圾桶,整天在角落收垃圾,一天到晚都挺着一个“啤酒肚”,...
我最爱看的电视栏目250字作... 我最爱看的电视栏目250字作文我最爱看的电视栏目是少儿频道的《熊出没》。原因:因为这部动画片很好玩,...
爱玩乐器的爸爸作文 爱玩乐器的爸爸作文爱玩乐器的爸爸··· 韩鹦我的爸爸是一个非常喜欢音乐的人,他特别擅长吹、拉、弹各种...
让我再看你一眼作文 让我再看你一眼作文  在日常学习、工作抑或是生活中,许多人都有过写作文的经历,对作文都不陌生吧,借助...
20年后的世界想象作文 20年后的世界想象作文  在日常的学习、工作、生活中,大家对作文都再熟悉不过了吧,写作文可以锻炼我们...
雨优秀作文 【荐】雨优秀作文  在日常学习、工作和生活中,大家都经常看到作文的身影吧,作文根据写作时限的不同可以...
春天作文 关于春天作文(通用15篇)  在日复一日的学习、工作或生活中,大家总少不了接触作文吧,作文是一种言语...
给老师“画像”_我的老师作文... 给老师“画像”_我的老师作文600字  无论是在学校还是在社会中,许多人都有过写作文的经历,对作文都...
我喜欢的水果西瓜作文 我喜欢的水果西瓜作文我喜欢的水果西瓜我最喜欢的水果就是西瓜了。今天正好是星期天,我的奶奶到市场去给我...
秋收的作文600字 秋收的作文600字(精选32篇)  在日常学习、工作或生活中,大家都不可避免地会接触到作文吧,作文是...