标签:HERE 特殊 $1 字符 外部 通过 特性 本地 关系
编程语言介绍
变量:就是给计算机内存中的一段空间命令,命令的这个空间就叫做变量,而再给这个空间放入值的过程,我们就叫做给变量赋值;
bash下的变量的内部数据类型:(这是数据在内存中存放的格式,默认情况下,shell程序下一班都不会去申明数据类型,所以,我们的bash程序默认数据为字符类型)
字符型(string)
数值:整型(int)、浮点型
布尔类型:真假
同时,脚本一般在执行的时候都会自动启动一个子shell进程,命令行中的启动的脚本会继承当前shell环境变量(也就是我们自己通过 bash ./xx.sh 命令执行的脚本程序),为了能够让程序运用源shell下的Linux命令,我们就需要运行 #!/bin/bash 来让系统识别这个脚本程序中用到的Linux命令,以及调用相应的环境变量来执行程序;
bash下的支持变量类型:
环境变量
作用域为当前shell进程以及其子进程(脚本会自己再运行一个子进程)
export VARNAME=VALUE #export导出,也就是环境变量的定义方式;
或者先定义变量再导出也可以
VARNAME=VALUE
export VARNAME
我们可以通过命令:printenv、env、export 来查看当前的环境变量,如果想要在启动时候就需要导入环境变量,可以考虑将命令保存在profile或则bashrc文件中去;
本地变量(局部变量)
只对当前的bash程序有效,所以我们再shell脚本程序中定义的变量,基本上都是本地变量;例如:NAME=Jerry #在bash下直接定义一个变量,在这个bash进程下生效;
局部变量则是在这个bash进程下的一段代码中生效;例如:local VARNAME=VALUE #定义局部变量,只对当前的代码(作用域)生效;
位置变量
$1、$2、$3 ... 以此类推
这个变量主要和传参有关,它用来调用外部输入的参数,替换到shell脚本程序中去;
特殊变量
$? 用来判断上一条名的运行结果(0:表示上一条命令运行正确,非0:则表示错误,不同的数值代表不同的错误,其中1、2、127三个值是保留值,其他的错误值都可以自己定义)
【有时候我们并不需要一条命令的输出内容,而是只需要判断命令是否正常运行,这时候我们结合 /dev/null 以及输出重定向和 $? 来做即可;例如:id student &> /dev/null | echo $? #判断是否存在student这个用户】
$#
$@
$*
变量的赋值:VAR_NAME=VALUE (这里我们需要知道的是变量的命名,必须具有可读性,这里没有硬性要求,完全是编程规范)
变量的调用:我们通过 ${VARNAME} 的方式来调用变量,如果其中VARNAME是一个独立的字符串,则 {} 一般都会被省略掉;但是有时候又不能省略,例如:
ANIMAL=pig
echo "There are some ${ANIMAL}s." #这里的 {} 就不能省略,如果省略了,$ANIMALs 这个变量系统就无法识别了;
撤销变量:所有的变量定义的时候,我们都省略了set命令,现在我们要撤销变量赋值关系,或则删除变量,就需要通过unset来执行;例如:unset VARNAME 即可;
逻辑运算
if语句:
单分支if语句
双分支if语句
多分支if语句
标签:HERE 特殊 $1 字符 外部 通过 特性 本地 关系
原文地址:https://www.cnblogs.com/BurnovBlog/p/10347322.html