学习内容来源:Testerhome_霍格沃兹学院
- shell 定义:
- 常用shell :bash、sh、zsh
- bash语言:变量 、逻辑控制、shell环境、脚本应用、自动化
-
变量定义
echo 向屏幕输出,$a 应用a这个变量- 变量定义 ‘=’两边不能有空格
- 大小写敏感
- 变量值中有空格,需要用引号引起来
- 在单引号中不能引用变量,需要使用双引号方能将变量引用出来
- 变量不需要定义
- 引用变量时,使用{}括起来
-
预定义变量
- $PWD
- $USER
- $HOME
- $PATH
-
数组变量
- () 定义数组,a=(1 2 3 4) 元素通过空格来作为间隔,echo${a} 输出数组第一个元素
- 如何输出全部数组? echo
{a[*]}
- 如何获取数组的长度? 使用# 获取数组长度,echo ${#a[*]}
- 反引号的使用 ,执行反引号中的命令并将命令执行结果赋给变量 a=(
ls),echo{a}
-
特殊符号的使用
- 双引号的内容是字符串,同时也支持变量引用 a='word' echo "hello ${a}"
- 单引号的内容是字符串,但不支持变量引用
- 反斜线 \,转义字符 echo -e "a\nbb"
- “``” 表示命令的输出, 反引号在所有linux操作系统上都支持
- $(ls) 表示执行ls的结果,与`` 类似,但是不是所有linux系统都支持
-
((a + 1))
- (()) 整数扩展,把里面的变量当做整数去处理 a=1 ((a=a+1)) echo ${a}
- ({1 . . 10}) 等价于seq 1-10 表示1到10
-
数字型变量
- shell里面不支持浮点数运算 awk 实现浮点数运算 ,示例: awk 'BEGIN{print 2/3}'
-
字符串操作
- 字符串截取,s='hello from testerhome'
{s:6:3} 从第六个字符开始截取,保留三个字符
- 字符串长度 echo ${ #s }
- 字符串替换 ,使用 // 替换 ,第一个斜杠后面是替换内容,第二个斜杠后面是替换后的内容 echo ${s/testerhome/mmm}
- 字符串掐头匹配:
4.1 掐头# echo "{s#o}"
4.3 掐头## 贪婪匹配: echo "{s%home}"
4.5 去尾%(* 通配符,如果是掐头,在字符前面,去尾则在字符后面) echo "${s%h}"
4.6 去尾%% 贪婪匹配
- 字符串截取,s='hello from testerhome'
-
布尔变量
-
?
-
-
判断的类型
- 字符串判断
- 逻辑判断,条件:if;分支:case;循环:for、while、untile select ;&& ||;break continue
- shell 内置判断,-e file 如果文件存在,则结果为真;-d file 如果文件是一个子目录,则结果为真; -f file 如果文件是一个普通文件,则结果为真;-r file 如果文件可读,则结果为真; -s file如果文件长度不为0,则结果为真; -w file 如果文件可写,则结果为真;-x file如果文件可执行,则结果为真。
- 算术判断:
4.1 eq 等于、ne 不等、gt 大于、ge大于等于、lt小于、le小于等于;算术比较,如= 、>=等
4.2 判断内容 一定要在[]中进行,且比较数值与[]前后要有空格 [ 2 -eq 2 ]; echo $?
4.3 -a 逻辑与 && ,-o 逻辑或 ||
-
常用命令:
- which,查找某个命令在什么位置,仅限在PATH路径中的内容
- touch,创建文件
- ls,打印当前目录下的所有内容
- Ctrl+C 退出程序