shell变量学习笔记


变量赋值,一般的和比较特殊的:
# Simple case
a=23     
echo $a
b=$a
echo $b

[root@ www.bkjia.com ~]# a=`echo Hello!`
-bash: !`: event not found
注意,如果在命令扩展结构中使用一个(!)的话,在命令行中将不能工作,因为这触发了 Bash的"历史机制".
a=`ls -l`            #  把ls -l 的结果给 a
echo $a           #  别忘了,这么引用的话,ls 的结果中的所有空白部分都没(包括换行)
echo "$a"         # 这么引用就正常了,保留了空白

使用$(...)机制进行的变量赋值(除去使用``来赋值的另外一种新方法). 事实上这两种方法都是
命令替换的一种形式.

[root@ www.bkjia.com ~]# a=2334
[root@ www.bkjia.com ~]# let "a += 1"
[root@ www.bkjia.com ~]# echo "a=$a"
a=2335
[root@ www.bkjia.com ~]# b=${a/23/BB}            # 将23替换成BB
[root@ www.bkjia.com ~]# echo "b=$b"
b=BB35

空变量会怎样:
[root@ www.bkjia.com ~]# e=""
[root@ www.bkjia.com ~]# echo "e=$e"
e=
[root@ www.bkjia.com ~]# let "e+=1"
[root@ www.bkjia.com ~]# echo "e=$e"
e=1
[root@ www.bkjia.com ~]# echo "e=$e"
e=1
[root@ www.bkjia.com ~]# let "e+=1"
[root@ www.bkjia.com ~]# echo "e=$e"
e=2

未声明变量会怎样:
[root@ www.bkjia.com ~]# echo "f=$f"
f=
[root@ www.bkjia.com ~]# let "f+=1"
[root@ www.bkjia.com ~]# echo "f=$f"
f=1

如果一个脚本设置了环境变量,需要export 它,来通知本脚本的环境,这是export命令的功能。脚本只能对它产生的子进程export 变量.一个从命令行被调用的脚本export 的变量,将不能影响调用这个脚本的那个命令行shell 的环境.

位置变量:
就是从命令行中传进来的参数,$0, $1, $2, $3...
$0就是脚本文件的名字,$1 是第一个参数,$2 为第2 个...,参见[1]( 有$0的说明),$9以后就需要打括号了,如${10},${11},${12}...
两个值得注意的变量$*和$@, 表示所有的位置参数.

相关内容