变量的声明及其作用域

本地变量

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`

Big_fat_cat
207 声望10 粉丝