美文网首页
2020-08-24Shell脚本概述和变量

2020-08-24Shell脚本概述和变量

作者: testerPM | 来源:发表于2020-08-24 15:12 被阅读0次

什么是shell?

shell是一个命令 解释器,作用是解释执行用户输入的命令和程序(即shell命令解释器用来执行shell脚本)
shell是由c语言编写的程序
shell存在与操作系统的最外层,负责和用户直接对话,把用户的操作解释给系统,并且处理各种操作系统的输出结果,然后输出结果到屏幕给用户。
外围应用程序->命令解释器(shell)->系统内核->硬件

什么是shell脚本?

shell脚本:当命令不在命令行模式下执行,而是通过一个程序文件来执行(对比windows系统下的*.bat批处理程序)
由用户在shell脚本输入一系列的命令和命令语句。(命令语句即变量,流程控制语句,注释组成)

shell脚本可以处理操作系统底层的业务,基于linux几千个对于常见系统脚本,使用shell更简单,快捷,如:软件一键自动化安装,部署,优化,软件启动脚本,备份等

Linux命令和shell脚本区别:
1.linux命令是在linux命令行模式下执行

  1. shell脚本通常是一个文件,文件包括各种命令和命令语句

shell脚本规范以及注释

(1) 脚本第一行指定脚本解释器

#!/bin/bash   或者
#!/bin/sh

(2) 脚本开头加上作者,日期,版本信息

#Date:      2017-01-01
#Author:   Created by hhy
#Email:  1425301899@qq.com
#Description:  The script function  is to.....
#Version:     1.0

(3) 脚本中一定不要使用中文,防止乱码

(4) 脚本文件应该以".sh"结尾

(5) 代码缩进(tab键)

(6)“#” 后面的内容表示注解(除了开头第一行),不会当作程序运行,系统解释器看不到这部分内容,既可以自成一行也可以跟在脚本命令后面在同一行。

第一个Hello World 脚本

#!/bin/bash
#Date:      2017-01-01
#Author:   Created by hhy
#Email:  1425301899@qq.com
#Description:  The script function  is to.....
#Version:     1.0

echo " Hello  World"

shell 脚本运行/执行

shell脚本的执行是从上到下,从左到右依次执行

shell脚本执行方式:
(1) /bin/bash script-name 当脚本文件本身没有可执行权限时可以使用该方法
[root@localhost sciptshell]# /bin/bash script-name
(2)./script-name 需要先将脚本文件的权限改为可执行
[root@localhost sciptshell]#./script-name

两者执行区别:

通过此方法执行,shell脚本开头如果不加 #!/bin/bash 也是可以执行的,但是通过./script-name ,shell脚本开头如果不加 #!/bin/bash 此脚本是不能被执行的

shell 变量

shell变量特点: bash shell不区分变量类型,如 :常见的变量类型为整型,字符串,小数等,要和强类型语言作区别(Java /c/c++)

shell变量分类:

1.环境变量 (全局变量)

指用export 内置变量导出的变量,用于定义shell运行环境,都是大写形式,永久生效
shell脚本运行时会查找系统环境变量PATH :指定环境文件,顺序加载之后,就开始执行shell脚本的内容
eg: 搭建jdk环境时,在/etc/profile配置的信息
打印path信息
[root@localhost sciptshell]#echo ${PATH}

2. 普通变量(局部变量)

在当前shell运行期间的脚本中使用,退出shell,变量生效
运行期间指的是:./script -name 回车到脚本执行结束这个过程就是脚本运行期间

定义:

变量名=value
变量名=” value"
eg: age=20
arr="hello world"
引用变量:{变量名} 例子:{age}

将命令的结果作为变量的内容赋值:time=${date}
1.内容是纯数字,简单的连续字符(内容中不带有任何空格),定义时可以不用加引号

  1. 没有特殊情况时,字符串一律用双引号定义赋值,特别是多个字符串中间有空格
  2. 希望变量值引用命令并获取命令的结果时就用${}

脚本举例如下:

#!/bin/bash
#Date:      2017-01-01
#Author:   Created by hhy
#Email:  1425301899@qq.com
#Description:  The script function  is to.....
#Version:     1.0
#定义一个整型变量
first=20
# 将命令的结果赋值给一个变量
time=${date}
#输出这个变量
echo ${first}
#获取date命令的结果(这里的date不是一个变量,而是linux 可执行命令,用来查看系统时间
echo ${date}
#打印引用变量 ${time}结果
echo  ${time}

3. 特殊变量

(1) $0

获取当前执行的shell脚本的文件名,如果执行脚本包含了路径,那么就包含路径名

例如:

#!/bin/bash
#Date:      2017-01-01
#Author:   Created by hhy
#Email:  1425301899@qq.com
#Description:  The script function  is to.....
#Version:     1.0
echo $0

[root@localhost sciptshell]#./firstShellScript.sh
./firstShellScript.sh

[root@localhost sciptshell]#/bin/bash firstShellScript.sh
firstShellScript.sh

(2)$n

获取当前执行的shell脚本的第n个参数值,n=1......9 ,当n为0时表示脚本的文件名,如果n大于9,则用大括号括起来,例如 ${10}

举例说明:

#!/bin/bash
#Date:      2017-01-01
#Author:   Created by hhy
#Email:  1425301899@qq.com
#Description:  The script function  is to.....
#Version:     1.0
echo $0
echo $1
echo $2

执行结果如下:firstShellScript.sh脚本执行打印出了文件名,以及文件名后面根的执行参数
1指的是第一参数,2指的是第二个参数
[root@localhost sciptshell]#./firstShellScript.sh start stop
./firstShellScript.sh
start
stop

(3)$#

获取当前执行的shell脚本后面接的参数的总个数
举例说明:

#!/bin/bash
#Date:      2017-01-01
#Author:   Created by hhy
#Email:  1425301899@qq.com
#Description:  The script function  is to.....
#Version:     1.0
echo $0
echo $1
echo $2
echo $#

上面脚本 echo $#执行的结果就是 2
[root@localhost sciptshell]#./firstShellScript.sh start stop
./firstShellScript.sh
start
stop
2

(4)$?

获取执行上一个指令的执行状态返回值(0为成功,非0为失败)
用来判断上一个命令是否执行成功

举例说明:

#!/bin/bash
#Date:      2017-01-01
#Author:   Created by hhy
#Email:  1425301899@qq.com
#Description:  The script function  is to.....
#Version:     1.0
echo $0
echo $1
echo $2
echo $#
echo $?

上面脚本 echo $?执行的结果就是 0
[root@localhost sciptshell]#./firstShellScript.sh start stop
./firstShellScript.sh
start
stop
2
0

变量数值运算

算数运算命令

((运算表达式)): 用于整数运算的常用运算符,效率很高
表达式需要加2对小括号

算数运算符 意义
+、- 加法(或正号)、减法或者负号()
+、/ 乘法、除法
++、-- 自增加或者自减少
!、&&、|| 逻辑非(取反)、逻辑与(and)、逻辑或(or)
<、<=、>、>= 比较符号
==、!= 比较符号(相等、不相等)

举例说明:

#!/bin/bash
#Date:      2017-01-01
#Author:   Created by hhy
#Email:  1425301899@qq.com
#Description:  The script function  is to.....
#Version:     1.0
#加法运算,需要用2对小括号且括号外需要使用$符号
echo $((1+2))
#除法取整
echo $((3/2))
#自增
i=10
echo  $((i++))
echo ${i}
echo $((++i))

[root@localhost sciptshell]#./firstShellScript.sh
3
1
10
11
12

注意:

  1. ((i++))输出是10 是因为先运算左边的,再运算右边的,-》所以{i}=11
  1. 任意非0整数(不管你是负的还是正的)取反,得到的结果都是1
    逻辑取反操作,0代表假,1代表真
    所以, echo ((!0)) ->打印结果为 1 echo((!1))->打印结果为 0
    echo $((!-1))->打印结果也为 0

  2. 双与&&: 两个都为真,结果才为真
    echo $((!0 && 0))-->得到的结果是 0

4.短路或 ||:其中一个为真,结果就为真
echo $((!0 || 0))-->得到的结果是 1

5.比较运算符:也是逻辑运算,结果也只有0或1
echo ((5>3))---->打印的结果为 1 echo((5==3))----》打印结果为 0
echo $((5!=3))----->打印结果为 1

6.算数运算符不能使用小数
比如 echo $((5.1!=3))---->执行脚本会报错
如果使用小数,需要使用linux bc命令(自行百度)

相关文章

  • 2020-08-24Shell脚本概述和变量

    什么是shell? shell是一个命令 解释器,作用是解释执行用户输入的命令和程序(即shell命令解释器用来执...

  • Groovy语言介绍

    Groovy概述 语言基础 变量 有两类可以在生成脚本中声明的变量: 局部变量和额外属性 a、局部变量 b、额外属...

  • JASS

    一、初识jass 1、概述(配合魔兽3编辑地图使用的脚本语言) 变量 存储数据,重点熟悉和掌握全局和局域变量 ....

  • shell基础(一)

    一:shell脚本内容解释器 二:shell脚本的执行方式 三:变量 变量分为:环境(全局)变量和普通(局部)变量...

  • shell编程之变量+运算符+环境变量配置文件

    一、shell编程之变量 1.Bash变量概述 Shell语言:脚本语言,所见即所得,将编译过程放到程序执行过程中...

  • Ruby18

    参数、解包和变量 另外一种把变量传给脚本的方法 写一个可以接受参数的脚本 ARGV 就是所谓的参数变量,这个变量...

  • shell脚本(5):变量类型

    变量分为:本地变量、环境变量、位置变量及特殊变量。 1.本地变量 只在shell脚本内部使用,各脚本之间的变量独立...

  • jsp入门笔记

    JSP动态页面技术 脚本和注释jsp脚本 <% java代码 %> <%= java变量或表达式 %> <%...

  • shell子进程修改父进程的环境变量值

    shell子进程修改父进程的环境变量值 脚本中的环境变量通过 export 导出,脚本中调用其他脚本使用这个变量 ...

  • shell脚本介绍、shell脚本结构和执行、date命令用法、

    目录 一、shell脚本介绍二、shell脚本结构和执行三、date命令用法四、shell脚本中的变量 一、she...

网友评论

      本文标题:2020-08-24Shell脚本概述和变量

      本文链接:https://www.haomeiwen.com/subject/ehagjktx.html