shell的概述
在计算机科学中,shell就是一个命令解释器。
shell是位于操作系统和应用程序之间,是他们二者最主要的接口。
shell负责把应用程序的输入命令信息解释给操作系统,将操作系统命令处理后的结果解释给应用程序。
系统 | 命令 | 文件 |
---|---|---|
Windows系统 | cmd.exe | .bat |
Linux系统 | /csh/ ksh /bash | .sh |
Shell的使用方式:
手工方式:
手输入命令,按enter执行
脚本方式:
写到一个文件当中进行保存,然后通过命令 sh shell脚本.sh 或者./shell脚本名字.sh(./的意思就是当前目录)
#!/bin/bash
返回的是一个字符打印
echo "你好" echo "shell!!!"
shell注释:
java:
单// 多 行/**/ 带doc (文档注释:javadoc /** */ 可以导出注释)
单行注释: # 注释的内容 多行注释: :<<! 注释内容 !
shell 变量
普通变量 和 命令变量
普通变量:
# 定义普通变量: 方式一: 变量名=变量值 (中间不能有特殊字符) 方式二: 变量名='变量值' (引用括号中的原变量值) 方式三: 变量名="变量值" (如果变量值中有连接符,相当于java+,然后赋值)
命令变量:
命令变量: 方式一: 变量名=`命令` # 是反引号 第二行第一个 方式二: 变量名=$(命令)
使用变量:
使用变量: 方式一 : $变量名 非标准使用,图省事 方式二: "$变量名" 非标准使用 方式三: ${变量名} 在双引号里面使用变量 方式四: "${变量名}" 在双引号里面使用变量,标准使用
只读变量:
readonly 变量名
删除变量:
unset 变量
从以上大家可以看出,shell 定义变量的时候,并没有定义数据类型,所以shell是一种弱类型语言。所以shell不需要指定数据类型
变量的定义规范:
1, 不能以数字开头,是以字母,数字,下划线组成
shell数组
定义方式:
数组名=(值1 值2 值3) arr=(22 33 44)
赋值方式
数组名[索引]=值 arr[0]=20
获取元素及长度
${数组名[下标]} ${arr[0]}
获取长度
${#数组名[*]} ${#arr[*]} ${#数组名[@]} ${#arr[@]}
运算符:
运算符 | 说明 | 举例 |
---|---|---|
+ | 加法 | expr $a + $b |
- | 减法 | expr $a - $b |
* | 乘法 | expr $a * $b |
/ | 除法 | expr $b / $a |
% | 取余 | expr $b % $a |
= | 赋值 | a=$b 将把变量 b 的值赋给 a。 |
++/ -- | 自增,自减 | ((a++)) |
注意事项:
注意点: 1,原生的bash不支持简单的数学运算。 可以通过其他命令实现.expr 2,表达式和运算符中间要有空格 3,完整的表达式要被反引号包含。 举例: `expr 2 + 2`
shell字符串运算符
运算符 | 说明 | 举例 |
---|---|---|
= | 检测两个字符串是否相等, 相等返回 true。 | [ $a = $b ] |
!= | 检测两个字符串是否不相等, 不相等迒回 true。 | [ $a != $b ] |
-z | 检测字符串长度是否为0, 为0返回 true。 | [ -z $a ] |
-n | 检测字符串长度是否为0, 不为0返回 true。 | [ -n "$a" ] |
$ | 检测字符串是否为空, 不为空返回 true。 | [ $a ] |
shell关系运算符
运算符 | 说明 | 举例 |
---|---|---|
-eq | 检测两个数是否相等, 相等返回 true。 | [ $a -eq $b ] |
-ne | 检测两个数是否不相等, 不相等返回 true。 | [ $a –ne $b ] |
-gt | 检测左边的数是否大于右边的, 如果是,则返回 true。 | [ $a –gt $b ] |
-lt | 检测左边的数是否小于右边的, 如果是,则返回 true。 | [ $a –lt $b ] |
-ge | 检测左边的数是否大于等于右边的, 如果是,则返回 true。 | [ $a –ge $b ] |
-le | 检测左边的数是否小于等于右边的, 如果是,则返回 true。 | [ $a –le $b ] |
技能专业程度:
了解:听说过
熟悉:做过
掌握:基本操作
熟练:多次一般操作
精通:高级的操作
shell布尔运算符
运算符 | 说明 | 举例 |
---|---|---|
! | 取反运算 | [ ! false ] 返回 true。 |
-o | 或运算,有一个表达式为 true 则返回 true。 | [ $a -lt 20 -o $b -gt 100 ] |
-a | 与运算,两个表达式都为 true 才返回true。 | [ $a -lt 20 -a $b -gt 100 ] |
Shell逻辑运算
运算符 | 说明 | 举例 |
---|---|---|
&& | 逻辑的 AND | [[ true && true ]]返回 true |
|| | 逻辑的 OR | [[ false || false ]] 返回 false |
Shell 判断语句
if[条件] then 语句体 fi
if[条件] then 语句体 else 语句体 fi
if[条件1] then 语句体 elif[条件2] 语句体 else 语句体 fi
shell选择语句
case 值 in 模式1) 语句体1 ;; 模式2) 语句体2 ;; ………… esac
shell 循环语句
for循环
for 变量 in 范围 do 循环体 done
示例 :
for loop in A B C do echo $ loop done
while循环
while 条件 do 循环体 done
示列:
a=1 while [ "${a}" -le 10 ] do echo ${a} ((a++)) done
shell 函数(方法)
函数名(){ 方法体 }
有参无返回值
test(){ echo "第一个参数$1" echo "第二个参数$2" } 调用 test a b
有参有返回值
test(){ echo "接收到了参数:$1 和参数:$2" return $(($1+$2)) } test 10 20 echo$?