文章目录
前言
为什么要学习Shell编程
1.Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理。
2对于JavaE和Python程序员来说,工作的需要,你的老大会要求你编写一些Shell脚本进行程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。
3.对于大数据程序员来说,需要编写Shell程序来管理集群。
一、Shell是什么
Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
二、Shell脚本的执行方式
脚本格式要求
1.脚本以#!/bin/bash
开头
2.脚本需要有可执行权限
●编写第一个Shell脚本
需求说明:创建一个Shell脚本,输出hello world!
#!/bin/bash
echo "hello,word"
chmod u+x shcode.sh 添加可执行权限
脚本的常用执行方式
方式1(输入脚本的绝对路径或相对路径)
说明:首先要赋予helloworld.sh脚本的+x权限,再执行脚本
方式2(sh+脚本)
说明:不用赋予脚本+x权限,直接执行即可。
三、Shell的变量
Shell变量介绍
- Linux Shell中的变量分为,系统变量和用户自定义变量。
- 系统变量:
$HOME、$PWD、$SHELL、$USER
等等,比如:echo $HOME
等等. - 显示当前shell中所有变量:set
shell变量的定义
基本语法
1.定义变量:变量=值
2撤销变量:unset变量
3.声明静态变量:readonly变量,注意:不能unset
快速入门
#!/ bin/ bash
#案例1:定义变量AA=100
#输出变量需要加上$
echo A=$A
echo "A=$A"
#案例2:撤销变量A
unset A
echo "A=$A"
#案例3:声明静态的变量B=2,不能unset
readonly B=2
echo "B=$B"
unset B 添加这句,会提示出错
定义变量的规则
1.变量名称可以由字母、数字和下划线组成,但是不能以数字开头。5A=200(×)
2.等号两侧不能有空格
3.变量名称一般习惯为大写,这是一个规范,我们遵守即可
将命令的返回值赋给变量
1.A=
date反引号,运行里面的命令,并把结果返回给变量A
2. A=$(date)
等价于反引号
四、设置环境变量
基本语法
export 变量名=变量值
(功能描述:将shell变量输出为环境变量/全局变量)source 配置文件
(功能描述:让修改后的配置信息立即生效)echo $变量名
(功能描述:查询环境变量的值)
快速入门
1.在/etc/profile文件中定义TOMCAT_HOME环境变量
export TOMCAT_HOME=/opt/tomcat
2.查看环境变量TOMCAT_HOME的值
source /opt/tomcat
echo $TOMCAT_HOME
3.在另外一个shell程序中使用TOMCAT_HOME
echo "tomcat=$TOMCAT HOME"
注意:在输出TOMCAT_HOME 环境变量前,需要让其生效source /etc/profile
附Shell脚本的多行注释
:<<!
内容
!
五、位置参数变量
介绍
当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量
比如:./myshell.sh 100 200,这个就是一个执行shell的命令行,可以在myshell 脚本中获取到参数信息
●基本语法
List item
$n
(功能描述:n为数字,$0
代表命令本身,$1- $9
代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10}
)
$*
(功能描述:这个变量代表命令行中所有的参数,$* 把所有的参数看成一个整体)
$ @
(功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
$#
(功能描述:这个变量代表命令行中所有参数的个数)
●位置参数变量
案例:编写一个shell脚本position.sh,在脚本中获取到命令行的各个参数信息。
echo "0=$0 1=$1 2=$2"
echo "所有的参数=$*"
echo "$@"
echo "参数的个数=$#"
六、预定义变量
基本介绍
就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用
基本语法
$$
(功能描述:当前进程的进程号(PID) )
$!
(功能描述:后台运行的最后一个进程的进程号(PID) )
$ ?
(功能描述∶最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)
应用实例
在一个shell脚本中简单使用一下预定义变量preVar.sh
#!/bin/bash
echo "当前执行的进程id=$$"
#以后台方式运行一个脚本,获取他的进程号
/root/shcode.sh &
echo "最后一个后台方式运行的进程id=$!"
echo "执行的结果是=$?"
七、运算符
基本介绍
学习如何在shell中进行各种算操作。
基本语法
1.“$((运算式))
”或“$[运算式]
”或者expr m +n
2.注意expr运算符间要有空格
3. expr m - n
4.expr *.1.% 乘,除,取余
应用实例
案例1:计算(2+3)X4的值
#!/bin/bash
RES=$(((2+3)*4))
echo "res=$RES"
#使用第二种方式,推荐使用
RES2=$[(2+3)*4]
echo " res2=$RES2"
#使用第三种方式expr
TEMP=` expr 2 +.3`
RES4=`expr $TEMP \* 4`
echo "temp=$TEMP"
echo "res4=$RES4"
#案例2:请求出命令行的两个参数[整数]的和20 50
SUM=$[$1+$2]
echo "sum=$SUM"