-
/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,不读取环境变量,%表示命令字段的换行
shell编程
于 2022-11-20 23:56:48 首次发布