shell 基本使用
一、shell编程变量简介
shell编程语言属于弱语言,在使用变量前无需对变量进行声明,变量的默认类型为“字符串类型”,可以通过echo $变量名 进行提取变量的值。在bash中,变量类型分为:环境变量、本地变量(局部变量)、位置变量、特殊变量,其中环境变量和本地变量是以作用域来进行区分。
二、变量配置原则
1、变量名只能采用英文字母跟数字命名,并且不能以数字开头
![](https://images2015.cnblogs.com/blog/974790/201704/974790-20170409223845503-1657574272.png)
2、给变量赋值时,等号两边不能有空格
![](https://images2015.cnblogs.com/blog/974790/201704/974790-20170409223901988-425816050.png)
![](https://images2015.cnblogs.com/blog/974790/201704/974790-20170409223901988-425816050.png)
3、若等号右边字符串之间有空格或者特殊符号,可以采用 [双引号、单引号]进行括住
例如:NAME='ZWS is a Student'
NAME="ZWS is a Student"
注意:
a. 单引号与双引号的区别:单引号扩住的内容是属于字符串,纯文本的,不会对特殊字符进行转义,双引号扩住的内容会对特殊字符进行转义。
b.如果字符内容存在' " 特殊字符时,需要注意,因为单引号、双引号是成对出现的。
![](https://images2015.cnblogs.com/blog/974790/201704/974790-20170409223950863-86150256.png)
4、可以采用 \ 将特殊字符转换成一般字符(空格、$等)
![](https://images2015.cnblogs.com/blog/974790/201704/974790-20170409224005613-1053736080.png)
5、如果需要其他命令返回的值,可通过` `(反单引号)或者$() 扩住相关命令
![](https://images2015.cnblogs.com/blog/974790/201704/974790-20170409224016191-1291832691.png)
6、如果需要在子程序中运行,需要通过export将该变量变成环境变量(默认情况下所有的变量都是属于局部变量)
![](https://images2015.cnblogs.com/blog/974790/201704/974790-20170409224028394-1579899904.png)
7、取消变量
unset 变量名
![](https://images2015.cnblogs.com/blog/974790/201704/974790-20170409224041488-495015951.png)
8、 ${变量名} 如果能够准确的明确变量明时,可以省略{}
![](https://images2015.cnblogs.com/blog/974790/201704/974790-20170409224051488-1857891268.png)
三、变量的数据类型
默认情况下变量的数据类型都是属于字符串类型,没办法对变量进行运算等操作,可以通过declare、typeset方式来设置变量的数据类型。总共有 整型、字符串、数组 等数据类型。
1、declare的使用方法
declare [-aixr] variable
选项与参数:
-a :将后面名为 variable 的变量定义成为数组 (array) 类型
-i :将后面名为 variable 的变量定义成为整数数字 (integer) 类型
-x :用法与 export 一样,就是将后面的 variable 变成环境变量;
-r :将变量配置成为 readonly 类型,该变量不可被更改内容,也不能 unset
a.让sum进行100+200+300数字运行得出和
![](https://images2015.cnblogs.com/blog/974790/201704/974790-20170409224244128-2108764268.png)
b.将sum变成环境变量
![](https://images2015.cnblogs.com/blog/974790/201704/974790-20170409224254472-872644580.png)
c.将sum变成只读属性
![](https://images2015.cnblogs.com/blog/974790/201704/974790-20170409224304144-2044163428.png)
d.将sum变量转回非环境变量
![](https://images2015.cnblogs.com/blog/974790/201704/974790-20170409224314425-1451461925.png)
四、变量作用域
#本地变量:作用域为整个bash进程有效 VARNAME=VALUE #局部变量:作用域为当前代码段有效 local VARNAME=VALUE #环境变量:作用域为当前的shell进程及其子进程 export VARNAME=VALUE
五、环境变量
注意:
1、脚本在执行时会启动一个字shell子进程
2、命令行启动脚本启动脚本会继承当前shell环境变量。
3、系统自动执行的脚本(非命令行启动),需要手动定义环境变量。 ===》(crontab自动执行执行脚本可能有问题)
六、if条件判断
1、单层简单条件判断
if [ 条件判断]; then 符合条件执行该语句 fi ---->结束 if
![](https://images2015.cnblogs.com/blog/974790/201704/974790-20170409225055691-1114636919.png)
2、多重条件判断
if [ 条件判断式一 ]; then 符合条件一,执行该语句 elif [ 条件判断式二 ]; then 符合条件二,执行该语句 else 条件一与二均不成立时,执行该语句 fi ------>结束if语句
七、case判断
1、case应用场景:
适用于需要进行多重分支的应用情况(固定重数)
2、case语法格式
case $变量名称 in <===以case开头 $+关键字 然后in结尾
模式1 ) <===判断语句,可采用特殊字符
程序段1
;; <===使用两个连续的分号,代表该模式程序段结束,类似c语言中的break;
模式2 )
程序段2
;;
* ) <===用 * 来代表所有其他值,类似c语言中的default。
默认执行程序段
;;
esac <===结束case语句 【case反过来写】