SHELL脚本基础讲解

1.Shell脚本概念

       1.定义:shell script 是利用shell的功能所写的一个“程序”,这个程序是使用纯文本文件,将一些shell的语法和命令写在里面,搭配成正则表达式、管道命令和数据流重定向等功能。以达到我们所想要的目的。

       2.范例

[root@localhost ~]# vim 01.sh
#!/bin/bash
#a simple example !
#
echo "please input your name: "
read Name
echo "Hello , $Name !!!"

       解析:

       在shell脚本中,我们一般会把 #!/bin/bash 放在第一行,这样当我们未指明运行的shell时,系统会默认的以bash来运行。在shell中我们通常把#放在一行的开头作为该行的注释。echo 命令能够将后面的内容打印出来而read命令能够要求用户输入一个数值,而shell会默认的将该数值赋给变量Name,在下文我将进行详细的阐述。


2.变量的概念

       在上面的示例中我们提到了变量的概念,那变量到底是什么呢?变量实际上是指可利用的内存空间,它限制了数据存储的格式和数据的表示范围。在shell中变量主要有以下几种:

本地变量:只对当前shell进程有效。                定义方式: [set] VAR_Name=value      其中set可以省略。

局部变量:只在局部程序内有效。                    定义方式:  local VAR_Name=value

环境变量:对当前shell及其子shell有效。       定义方式:  export VAR_Name=value

       当然系统中还默认有许多环境变量,我们可以通过 env 在命令行界面下查看。而要查看当前shell中所有的变量,我们可以使用 set 命令。

位置变量:$0  $1  $2  ...

       $0             默认情况下表示当前的shell,如果在脚本中执行能够输出当前脚本名称。

       $1,$2...    表示位置变量,能够输出所在位置中变量的值

特殊变量:$?  $$  $#  $@  $* ...

       $?            表示当前环境中命令执行的返回状态

       $$            表示当前shell的进程ID

       $#            表示当前环境中位置变量的个数

       $@,$*      能够打印出当前环境中位置变量的内容

在shell环境中我们可以通过 unset 命令对定义的变量进行撤销。


3.变量的相关声明

       bash实际上是一种交互式的接口,同时也提供了相关的编程环境;bash提供的是一种弱类型的语言,它不强制区分变量类型,无论存储什么数据,默认均以字符格式存储。在使用变量的过程中我们不需要事先声明。用到时直接赋值即可。但是在一定的环境中我们也可以对其进行声明。在bash中我们通常使用declare命令,格式如下:

declare -i VAR_Name     声明一个整形变量
declare -a VAR_Name     声明一个数组
declare -x VAR_Name     声明一个环境变量
declare -r VAR_Name     将变量声明为只读(readonly)



4.变量的引用

       格式如下:

${VAR_Name}             $加上一个大括号,中间引用变量名

       有的时候我们需要在输入的语句中引用变量的值,这个时候我们为保证得到的是变量值通常在引用的时候加上双引号。在shell中,双引号引用被称为弱引用,可以实现变量值的正常替换,而单引号引用被称为强引用,引号的内容原样输出,在某些时候我们需要在脚本中引用某些命令的执行结果,这个时候我们会使用反引号。以上就是引号在shell脚本中的相关作用。希望大家在使用的过程中不要混淆。

       有的时候我们在脚本的编写过程会用到数组,但不是很常用。在这里我做一下简单的介绍:

XX=(aa bb cc dd)            #定义一个属组XX
echo ${XX[2]}               #输出数组中下标为2的数组元素的值,这里为cc                   
echo ${XX[*]}               #将属组中所有的元素打印出来
echo ${XX[@]}               #效果和 echo ${xx[*]} 相同
echo ${!XX[@]}              #打印出数组中所有元素的下标
echo ${#XX[@]}              #打印属组中元素个数


5.shell脚本语法检查与调试

   可以通过bash进行,语法格式如下:

bash -n *.sh            #检查脚本中的语法错误(不真正执行脚本)
bash -x *.sh            #调试执行脚本


6.算术运算

   注意:shell不支持浮点数,计算结果中的浮点数默认的会被圆整为整数。

   算术运算的实现方式(有以下4种):

       $[expression]            C=$[$A+$B]

       $((expression))          C=$(($A-$B))

       let expression           let C=$A*$B

       expr expression          C=`expr $A / $B`

 示例:声明2个变量Num1和Num2,用四种方式打印出他们之间的和。

#!/bin/bash
Num1=13
Num2=7
let C=$Num1+$Num2
echo "$Num1+$Num2=$[$Num1+$Num2]"
echo "$Num1+$Num2=$(($Num1+$Num2))"
echo "$Num1+$Num2=$C"
echo "$Num1+$Num2=`expr $Num1 + $Num2`"


7.条件测试与判断

               1.整数测试

                      expression [ 数值1 比较符号 数值2 ]

比较符号 含义
-gt 大于
-ge 大于或等于
-eq 等于
-lt

-le 小于或等于
-ne 不等于

      2.字符测试

                       expression [ 数值1 比较符号 数值2 ]

比较符号 含义
> 大于
< 小于
== 等于
=~ 模式匹配
-z $string 判断是否为空
-n $string 判断是否不空

              3.组合测试条件

条件 符号 命令连接
-a &&
-o ||
! !




你可能感兴趣的:(shell,变量,测试,条件判断)