shell
shell是一个命令解释器。
shell是位于操作系统和应用程序之间,是他们二者最主要的接口。
shell负责把应用程序的输入命令信息解释给操作系统,将操作系统指令处理后的结果解释给应用程序
shell就是早操作系统和应用程序之间的一个命令翻译工具。
使用方法: 手工方式:
手打键盘,输入命令,然后按下回车
脚本方式:
我们把手工执行的命令写到一个文件中,然后运行这个我呢见,达到执行命令的效果。这个文件就叫做脚本文件。
shell注释
单行注释: # 注释内容
多行注释: :<<! 注释内容 !
shell变量
普通变量:
变量名 = 变量值 变量值必须是一个整体,中间没有特殊字符
变量名= ‘变量值’ 单引号中的内容,原样赋值
变量名= “变量值” 如果双引号中有其他变量,会把变量的结果进行拼接,然后赋值。
命令变量
变量名=命令
变量名=$(命令)
使用变量
变
量
名
非
标
准
写
法
,
图
省
事
"
变量名 非标准写法,图省事 "
变量名非标准写法,图省事"变量名" 非标准写法,图省事
变
量
名
在
双
引
号
里
面
要
使
用
变
量
的
值
"
{变量名} 在双引号里面要使用变量的值 "
变量名在双引号里面要使用变量的值"{变量名}" 标准写法
只读变量 readonly变量名
删除变量 unset变量名
shell数组*
定义数组: 数组名=(值1 值2…) arr=(1 2 3 4 5)
给数组的元素赋值: 数组名[索引]=值 arr[0]=1
获取元素:${数组名[下标]}
a
r
r
[
0
]
获
取
长
度
:
{arr[0]} 获取长度:
arr[0]获取长度:{#数组名[]} ${#arr[]}
${#数组名[@]} ${#arr[@]}
shell字符串运算
条件表达式在[]里面 0 为真 1为假
$?可以获取上一条语句的执行结果
shell关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
-eq:判断两个数书否相等,相等返回true
-ne:判断两个数是否不相等,不相等返回true
-gt:检测左边的数是否大于右边,如果是,返回true
-lt:检测左边的数是否小于右边,如果是,返回true
-ge:检测左边的数是否大于等于右边,如果是,返回true
-le:检测左边的数是否小于等于右边,如果是,返回true
shell布尔运算
! 取反运算
-o 或运算,有一个表达式为true,则返回true
-a 与运算,两个表达式都为true,才返回true
shell逻辑运算符
&& [[ true && true ]] 返回true
|| [[ false || false]] 返回false
shell判断语句
if[条件] then 语句体 fi
if[条件] then 语句体 else 语句体 fi
if[条件1] then 语句体 elif[条件2] 语句体 else 语句体 fi
shell选择结构语句
case 值 in
模式1)
语句体1
;;
模式1)
语句体1
;;
esac
shell的for循环语句
for 变量 in 范围
do
循环体
done
shell的while循环语句
while 条件表达式
do
循环体
done
shell函数
无参无返回值函数的定义 : 函数名(){ 函数体 }
函数的调用:函数名
有参无返回值函数的定义 : 函数名(){
echo “第一个参数$1”
echo “第二个参数$2”
}
有参无返回值函数的调用:函数名 a b
有参有返回值函数的定义 : 函数名(){
echo “第一个参数$1”
echo “第二个参数$2”
return $(($1+$2))
}
有参无返回值函数的调用:函数名 a b echo $?
read 变量名 ----表示把键盘录入的数据复制给这个变量