变量的声明及其作用域
本地变量
VARNAME=VALUE:作用域为整个bash进程【打开新的shell进程,没有该变量】
[root@jiakang a]# A=123
[root@jiakang a]# bash
[root@jiakang a]# echo $A
[root@jiakang a]#
局部变量
local VARNAME=VALUE:作用域为当前代码段
环境变量
作用域为当前shell及其子进程【打开一个shell就是一个进程】
export VARNAME=VALUE或者
VARNAME=VALUE export VARNAME
[root@jiakang a]# export NAME=jiakang
[root@jiakang a]# bash
[root@jiakang a]# echo $NAME
jiakang
位置变量
$1,$2,…【参数1、参数2…】
shift : 剔除变量
[root@jiakang a]# cat testshift.sh
#!/bin/bash
echo $1
shift
echo "第一个参数被剔出,现在$1是原来的第二个参数了"
echo $1
shift
echo "第三个了,依次类推,逐个剔除"
echo $1
[root@jiakang a]# ./testshift.sh 1 2 3
1
第一个参数被剔出,现在2是原来的第二个参数了
2
第三个了,依次类推,逐个剔除
3
特殊变量
$?:上一个命令的执行状态返回值
$#:参数的个数
$*:参数列表
$@:参数列表
[root@jiakang a]# cat testvar.sh
#!/bin/bash
echo $#
echo $*
echo $@
[root@jiakang a]# ./testvar.sh
0
[root@jiakang a]# ./testvar.sh testif.sh test.sh
2
testif.sh test.sh
testif.sh test.sh
撤销变量
unset VARNAME
查看当前shell的变量
set
查看当前shell的环境变量
env、printenv、export
脚本
脚本的执行方式有两种,一种是直接调用shell执行,把脚本的代码当作bash的参数
[root@jiakang a]# cat test.sh
ls -l
[root@jiakang a]# bash test.sh
总用量 8
drwxr-xr-x. 3 root root 4096 3月 28 16:34 b
-rw-r--r--. 1 root root 7 4月 4 20:13 test.sh
第二种是,开头声明魔数,脚本写完后添加执行权限
魔数:shebang【脚本的第一行,调用那种shell去执行脚本】
#!/bin/bash
[root@jiakang a]# vi test.sh
[root@jiakang a]# cat test.sh
#!/bin/bash
ls -l
echo "第二中,魔数"
[root@jiakang a]# chmod +x test.sh
[root@jiakang a]# ./test.sh
总用量 8
drwxr-xr-x. 3 root root 4096 3月 28 16:34 b
修改环境变量$PATH
使用:VALUE可以把该:VALUE与变量拼装,用这个方法可以修改环境变量
[root@jiakang a]# A=root
[root@jiakang a]# A=$A:usr
[root@jiakang a]# echo $A
root:usr
[root@jiakang a]# export PATH=$PATH:/bin
[root@jiakang a]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/bin/bash:/bin
算术运算
在bash中是不能进行算术运算的,可以使用下面几个方法进行算术运算
A=3
B=6
1、 let 算术运算表达式
let C=$A+$B
2、 $[算术表达式]
C=[$A+$B]
3、 $((算术表达式))
C=$(($A+$B))
4、 expr `算术表达式`【各操作数和运算符之间要有空格,并且使用命令引用】
C=`expr $A + $B`