首先看一下shell的几个重要的知识点:
Shell是用户使用Linux的桥梁。
shell是用户和Linux内核之间的接口程序。
Shell:
命令语言:交互解释和执行用户输入命令
程序设计语言:编写shell脚本,用于系统管理工作
Shell命令有两种形式:
1、内部命令:内置在其源码中,即存在于内存中,比如cd、echo。
2、外部命令,存在于文件系统中某个目录下的单独的程序,
例如cp、rm
查看使用命令:
$ type command
shell启动时文件初始将运行初始化化自己,具体运行哪个文件取决于该shell是
1、登录shell
2、交互式非登录shell(比如通过命令bash)
3、非交互式shell(用来执行shell脚本)
bash的主要功能如下:
1、命令行编辑功能
2、命令和文件名补全功能
3、命令历史功能
4、命令别名功能
5、提供作业控制功能
6、具有将命令序列定义为功能键的功能
7、灵活的Shell脚本编程
8、用户自定义变量(本地变量)
9、位置变量
10、环境变量
11、预定义变量
shell的变量:
像高级程序设计语言一样,shell也提供声明和使用变量的功能。
定义自己的变量
变量名=变量值
如:MYVAR=hello
注意:变量名和其值总是配对出现
变量名:
(1)可包含: “字母” “数字” “ _ ”
(2)以“ 字母 ” 或 “ _ ” 开始
(3)数字开头的变量保留为shell使用
变量值:
可存储任何想要存放的值
注意:值中出现空格,需加双引号
访问变量:
在变量名前加上“$”
$ MYVAR="how are you“
$ echo $MYVAR
清除变量:
使用unset命令清除变量。
unset MYVAR
查看所有变量:
使用set命令查看所有变量。
说明一个变量为只读
readonly 变量名(无法用unset清除)
变量默认都只是当前shell的局部变量,将变量成为公共变量的格式为:
export 变量名
也可以在给变量赋值的同时使用export命令:
export 变量名=变量值
**使用export说明的变量,在shell以后运行的所有命令或程序中都可以访问到
常用的环境变量:
HOME:保存注册目录
PATH:保存用冒号分隔的目录路径名
TERM:终端类型(xterm图形终端,linux文本终端)
UID:当前用户的标识符,取值是由数字构成的字符串
PWD:当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化
PS1:主提示符,“ # ” “ $ ”
PS2: 辅助提示符,在输入行末尾“\”,输出该提示符
IFS: shell指定的缺省域分隔符(空格 table :)
LOGNAME:此变量保存登录名
SHELL:保存缺省shell
命令行shell调用的格式:
预定义变量一览表:
重定向操作一览表:
管道操作符:
shell脚本运行:
1.使用Shell命令程序执行脚本程序
$ bash hello.sh
2.使用“.”命令执行脚本程序
$ . hello.sh
3.直接执行具有执行属性的脚本程序
$ ./hello.sh
命令替换:使用命令的输出来替换命令所在位置的内容
使用: `command` (后引号,在tab键的上面)
MYVAR=`date`
echo $MYVAR
算术替换:使用算术运算的结果替换算术表达式所在位置的内容
使用:$((expression))
MYVAR=$((1+1))
echo $MYVAR
条件测试:
文件测试:
字符串测试:
数值测试:
逻辑操作符:
混合条件:
流程控制语句:
shell函数的定义:
如果愿意,可在函数名前加上关键字
function,这取决于使用者。
1.函数可以放在同一个文件中作为一段代码,也可以放在只包含函数的单独文件中。
2.所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。
3.激活一个函数:$ function
调用函数的格式为:
函数名 param1 param2……
函数名 param1 param2……
当函数完成处理或希望函数基于某一测试语句返回时,可做两种处理:
1、让函数正常执行到函数末尾,然后返回脚本中调用函数的控制部分。
2、使用return返回脚本中函数调用的下一条语句,可以带返回值。0为无错误,1为有错误。
这是可选的,其格式为:
return :从函数中返回,用最后状态命令决定返回值。
return 0 :无错误返回。
return 1 :有错误返回