shell编程基础
shell概述 1. shell编程的意义 个人理解,shell编程类似于存储过程。存储过程是完成指定功能的一组sql语句集合,而shell编程就是完成指定功能的一组linux命令的集合。例如,我们要在服务器上部署一个一个项目,通常要做如下几个操作:
每次部署都要执行相同的一套流程,如果能把这些操作放在一个文件里,只需执行这个文件即可,会明显提高服务器运维管理的效率。这就是shell编程要满足的需求。 2. shell分类 linux的shell分类很多,例如
其中,最常用的是bash shell,即/bin/bash。 3. shell编程的格式 可以使用vi或vim编辑器创建shell脚本文件,其扩展名并没有要求,可以使用(.sh)表示它是一个shell文件,例如hello.sh、deploy.sh等,但是使用别的扩展名或者不用扩展名也不影响其执行。shell文件的第一行一般要指定shell种类,#!用来告诉系统,这个文件使用哪个解释器。例如最常用的bash shell这样写: #!/bin/bash #这是单行注释 echo "hello world" :<<! 这是多行注释 这是多行注释 这是多行注释 ! echo "byebye" ?4. shell脚本的执行方式 如果给shell脚本赋予了可执行权限,则直接写文件的路径名即可执行,可以使用绝对路径或相对路径,注意如果shell文件正好在当前目录下,相对路径要以 ./ 开头,而不能直接写文件名。如果并没有给shell脚本赋予可执行权限,则需要在文件路径名前加 sh。一般推荐第一种,即赋予用户对文件的可执行权限。例如,在当前路径(/home/dubhlinn)下有一个hello.sh的脚本, (1) 当用户对其有可执行权限时: ./hello.sh /home/dubhlinn/hello.sh (2) 当用户对其无可执行权限时: sh ./hello.sh sh /home/dubhlinn/hello.sh ? shell的变量 1. 变量的定义 变量名 = 变量值 #输出环境变量 echo $HOME echo $USER #自定义变量 A=12 B=hello echo A=$A echo B=$B shell编程中变量分为两类:环境变量、自定义变量。环境变量是linux系统已经预先定义好的变量,可以直接使用;自定义变量必须先定义,再使用。定义变量的的语法很简单,但是有几点需要注意:
2. 声明环境变量 (1) export 变量名=变量值 (2) source 文件路径名 第一步跟自定义变量相比,只是多了一个export关键字,第二步是为了让shell文件生效。完成这两步之后,可以在其它的shelle文件或中获取刚刚声明的环境变量。而相比之下,自定义变量仅限于在一个shell文件中使用,在其他的shell文件中无法使用。 #设置环境变量
export VILLA=Spain7 export TORRES=Spain9?
需要注意的是,在一个shell文件中,自定义变量会覆盖同名的环境变量,例如 #输出环境变量
echo VILLA=$VILLA #自定义变量
VILLA=Bacelona7 #输出,看是环境变量还是自定义变量
echo VILLA=$VILLA
第一次输出的是环境变量的值:Spain7,第二次输出的是自定义变量的值:Bacelona7。 3. 变量的撤销 unset 变量名 #撤销变量 B=hello unset B echo B=$B 4. 静态变量,不能被撤销 readonly 变量名=变量值 :<<! 静态变量 不能撤销 ! readonly C=5 echo C=$C unset C echo C=$C 执行这个脚本会报错,因为C是静态变量,不能使用unset将其撤销。 5. 将linux命令的执行结果赋给变量 变量名=`命令` 变量名=$(命令) #将linux命令的执行结果赋给变量,两种方式等价
A=`ls -lh` B=$(date) echo A=$A echo B=$B
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |