Shell
1.概述
Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核
还是一个功能相当强大的编程语言,易编写.易调试.灵活性强
2.shell解析器
查看linux提供的shell解析: cat /etc/shells
Sh和 bash是常用的 bash包含了其他的功能,进行了重新编写
查看默认解析器:echo $SHELL (centos默认的解析器是bash)
3.Shell 脚本入门
3.1脚本格式
脚本为 #!/bin/bash 开头 (指定的解析器)
创建脚本 touch 脚本名.sh
例如:创建脚本并在脚本中输入helloworld
Touch helloworld.sh
Vi helloworld .sh
#!/bin/bash
Echo “helloworld”
3.2脚本的常用执行方式
1.sh+脚本的相对路径
例:sh helloworld.sh
2.sh+脚本绝对路径
例:sh /home/bxg/helloworld.sh
3.bash+脚本的相对路径
例:bash helloworld.sh
4.bash+脚本的绝对路径
例:bash /home/bxg/helloworld.sh
3.3 进阶版 采用输入脚本的绝对路径或相对路径执行脚本(前提是必须具有可执行权限+x,推荐采用这种方式)
第一步 :赋予helloworld.sh 脚本 的+x权限
例:chmod +x helloworld.sh
第二步:执行
例:./helloworld.sh
注意:第一种方法本质是bash解析器帮你执行脚本,所以脚本本身并不需要执行权限。
第二种执行方式本质是脚本需要自己执行,所以需要执行权限。
3.4 多命令处理
需求:在home/bxg/目录下创建一个a.txt ,在a.txt文件中增加nihao
例:
Touch batch.sh 创建脚本
Vi batch.sh 编辑脚本
#!/bin/bash 规定开头
Cd/home/bxg
Touch a.txt
Echo “nihao” >>a.txt
3.5 查看脚本的执行流程(一般用来查看脚本执行的步骤,错误)
Bash -x batch.sh
3.6 查看脚本的语法(一般使用这个命令查看脚本语法错误)
Bash -n batch.sh
4 Shell中的变量
4.1系统变量
常用的有$HOME $PWD $SHELL $USER 等
例:
1查看系统变量的值 Echo $HOME
2 显示当前Shell中所有变量 set
4.2 自定义变量
4.2.1.语法
定义变量:变量=值 中间不能有空格
撤销变量:unset 变量
声明静态变量:readonly 变量 这个变量只能读,不能修改或者撤销
4.2.2规则
变量名称可以由字母/数字和下划线组成,但是不能以数字开头,环境变量名建议大写
等号两侧不能有空格
在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。
变量的值如果有空格,需要用双引号或单引号括起来。
例:
定义变量A A=5
查看变量 $A
重新赋值 A=3
撤销变量A unset A
声明静态变量B readonly B=2
变量无法进行数值计算
变量的值如果有空格,需要使用双引号或单引号括起来
4.2.3把变量提升为全局环境变量 可供其他shell程序使用
Export + 变量名
4.3 特殊变量
4.3.1 $n
n
功
能
:
n
为
数
字
,
n 功能:n为数字,
n功能:n为数字,n代表该脚本名称,$1-$9代表第一到第九个参数, 十以上的参数需要用大括号包含
例:
4.3.2$#
$# 功能:获取所有输入参数个数,常用于循环
4.3.3$* $@
∗
功
能
:
代
表
命
令
行
中
所
有
的
参
数
,
* 功能:代表命令行中所有的参数,
∗功能:代表命令行中所有的参数,*把所有的参数看成一个整体
@
功
能
:
功
能
一
样
,
但
是
@ 功能:功能一样,但是
@功能:功能一样,但是@是把每个参数区分对待
4.3.4 $?
$? 功能:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个 命令正确执行;如果非0.则证明上一个命令执行不正确了。