整个计算机就是一大堆的这种门来运算的 强类型编程:
变量在使用前,必须事先声明,甚至还需要初始化值的:
NULL: 弱类型编程:
变量用时才声明(拿来直接用就行了),甚至不区分类型(如果不区分类型,默认为字符串):
我们的shell编程是弱类型的编程语言
变量赋值VAR_NAME=VALUE(把这个值保存在变量空间里面去了)如:ShenGao=175 编程能力:
bash脚本编程 bash变量类型:
环境变量
本地变量(局部变量(局部变量不一定都是本地变量))
位置变量
特殊变量(bash内置的,用来保存bash特殊数据的,也有人把他称作系统变量)
本地变量:(变量一定是进程的变量)
[root@www ~]# NAME=jerry
[root@www ~]# echo $NAME
jerry
我们引用变量用:${VARNAME} (通常{}可以省略),如上
但是有时候会引起变量混淆的,我们就要加上花括号,如下
[root@www ~]# echo $NAME
jerry
[root@www ~]# echo "my name is $NAME"
my name is jerry
[root@www ~]# echo "my name is $NAMEs"
my name is
[root@www ~]# echo "my name is ${NAME}s"
my name is jerrys
[root@www ~]# echo "my name is ${NAME}:s+w"
my name is tom:s+w 可以看出有一些字符是不会被识别的,比如:,+...
子bash:在一个shell中再打开一个shell
变量的学习以及变量的类型
本地变量:
VARNAME=VALUE:作用域为整个bash进程:
局部变量:
local VARNAME=VALUE:作用域为当前代码段
export定义一个环境变量,环境的作用域如下(export意为:“导出”)
VARNAME=VALUE
export VARNAME
当然,环境变量如果重新打开一个shell,就会没有作用;但是子shell是有作用的
位置变量(是用来引用脚本的参数的):
$1,$2,...
比如下面的例子
#!/bin/bash
let sum=$[$1+$2]
echo -e "the sum is $sum"
然后输出结果就可以这样
[root@zabbix ~]# ./myshell.sh 15 96
the sum is 111
[root@zabbix ~]# ./myshell.sh 5 9
the sum is 14
特殊变量:
$?:上一个命令的执行状态的返回值,我们看到的输出是执行结果,那问如果是正确还是错误的话,就是状态结果,也叫做状态返回值
程序执行,可能有两类返回值,一种是正确的,一种是错误的
$?:上一个命令的执行状态返回值:如果不是0(执行状态返回代码),就是执行状态是错误的,如果是1-255就是错误的,不是正确的执行状态。
1-255中系统预留的有三个1,2,127,其他的可以自己定义的
[root@www ~]# ifconfig &> /dev/null
[root@www ~]# echo $?
0
&>错误还是正确都输出到/dev/null(软件模拟的设备,也叫做bit bucket(数据黑洞)放什么进去都会消失)下去,而/dev/null就是垃圾站一样,什么都可以接收,我们用上面的命令,就是为了查证上一个命令是否正确输出,echo $?,这样放进去null就不用显示屏幕了。