全部博文(362)
分类:
2010-09-28 15:58:10
强烈注意, 在赋值的的时候, 等号前后一定不要有空格。
注意设置一个变量为null, 与unset这个变量, 并不是一回事。
#var3=$V3
#echo $var3 没输出
#
一个未初始化的变量将会是"null"值 - 就是未赋值(但并不是代表值是0!). 在给变量赋值之前就使用这个变量通常都会引起问题.
但是在执行算术操作的时候, 仍然有可能使用未初始化过的变量.
1 echo "$uninitialized" # (blank line)
2 let "uninitialized += 5" # Add 5 to it.
3 echo "$uninitialized" # 5
4
5 # 结论:
6 # 一个未初始化的变量是没有值的,
7 #+ 但是在做算术操作的时候, 这个未初始化的变量看起来值为0.
8 # 这是一个未文档化(并且可能不具可移植性)的行为.
简单和复杂, 两种类型的变量赋值
1 #!/bin/bash
2
3 a=23 # 简单的赋值
4 echo $a
5 b=$a
6 echo $b
7
8 # 现在让我们来点小变化(命令替换).
9
10 a=`echo Hello!` # 把'echo'命令的结果传给变量'a'
11 echo $a
12 # 注意, 如果在一个#+的命令替换结构中包含一个(!)的话,
13 #+ 那么在命令行下将无法工作.
14 #+ 因为这触发了Bash的"历史机制."
15 # 但是, 在脚本中使用的话, 历史功能是被禁用的, 所以就能够正常的运行.
16
17 a=`ls -l` # 把'ls -l'的结果赋值给'a'
18 echo $a # 然而, 如果没有引号的话将会删除ls结果中多余的tab和换行符.
19 echo
20 echo "$a" # 如果加上引号的话, 那么就会保留ls结果中的空白符.
21 # (具体请参阅"引用"的相关章节.)
22
23 exit 0
使用$(...)机制来进行变量赋值(这是一种比更新的一种方法). 事实上这两种方法都是的一种形式.
1 # From /etc/rc.d/rc.local
2 R=$(cat /etc/redhat-release)
3 arch=$(uname -m)