shell编程
重定向
cat >temp
输入内容到temp文件中,如果存在temp则覆盖,没有则新建
cat >>temp
追加内容
cat temp1>>temp2
将temp1中的内容追加到temp
命令执行控制符号
; 一个命令行执行多条语句
命令替换符
1.双引号:用于带空格的字符串
2.单引号 阻止shell解析字符串
3.单撇反引号:将执行命令的结果放到变量里
转义符
variable=\$bva
\阻止shell对”$“元字符的解释工作
变量
-
变量名=字符串
-
$变量名 或 ${变量名} 访问变量
unset 变量名取消变量名
final变量
readonly 变量名
变量的数值运算
无法直接进行,可通过expr运算符
expr $num1 运算符 $num2
如果运算符为*,&,|,<,>必须用\转义符使其失去特殊含义
命令别名
alias
直接使用可查看命令别名
自定义命令别名
alias 别名=”原命令“
unalias 别名 取消别名
历史命令
history [-c] [n]
-c 清空(clear)
-n n为数字,即显示几条命令
==!!==上一条命令,感觉用处不大
第一个shell脚本
#! /bin/bash
# 注释
echo ”hello world“
date
执行
1.授权
chmod 775 脚本名
或
chmod a+x 脚本名
2.用 source 脚本名执行
交互式shell脚本
read -p "please input your name" name
echo "hello " $name
执行
bash name
注释
单行注释 | # |
---|---|
多行注释 | :<<EOF 代码 EOF 或:<<’ 代码’ 或:<<! codeContent ! |
分支结构
逻辑判断
只支持数字的关系运算符
-eq | 等于 |
---|---|
- neq | not equal |
-gt | A greater than B |
-lt | A less than B |
-ge | … |
-le | … |
与 | -a and (&&) |
---|---|
或 | -o or (||) |
非 | ! |
脚本调试
bash [-x][-n] 脚本名
-x | 执行脚本本同时显示脚本语句 |
---|---|
-n | 检查语法错误不执行 |
函数
字符串
- 获取字符串长度
${#string};
${#string[0]}
- 提取子字符串
${string:1:4}
数组
- 定义数组
值与值之间用空格隔开
数组名=(值1 值2 ... 值n)
- 读取数组元素
${数组名[下标]} 读取单个
${数组名[@]} 读取全部
- 读取数组长度
${#数组名[@]}
|
函数
[外链图片转存中…(img-AZme5QDw-1655274286263)]
字符串
- 获取字符串长度
${#string};
${#string[0]}
- 提取子字符串
${string:1:4}
数组
- 定义数组
值与值之间用空格隔开
数组名=(值1 值2 ... 值n)
- 读取数组元素
${数组名[下标]} 读取单个
${数组名[@]} 读取全部
- 读取数组长度
${#数组名[@]}