Advanced Bash-Scripting Guide: An in-depth exploration of the art of shell scripting | ||
---|---|---|
Prev | Chapter 4. Introduction to Variables and Parameters | Next |
赋值操作符(它的左右两边不能有空白符)
不要搞混了=和-eq,-eq是比赋值操作更高级的测试。 注意:等于号(=)根据环境的不同它可能是赋值操作符也可能是一个测试操作符。 |
例子 4-2. 简单的变量赋值
1 #!/bin/bash 2 # 裸变量 3 4 echo 5 6 # 什么时候变量是“裸”的?比如说,变量名前面没有$? 7 #当变量被赋值而不是引用时,我们称它为是裸变量。 8 9 # 赋值 10 a=879 11 echo "The value of \"a\" is $a." 12 13 # 用命令'let'赋值。 14 let a=16+5 15 echo "The value of \"a\" is now $a." 16 17 echo 18 19 # 在一个for循环里赋值(其实,这是一种伪赋值): 20 echo -n "Values of \"a\" in the loop are: " 21 for a in 7 8 9 11 22 do 23 echo -n "$a " 24 done 25 26 echo 27 echo 28 29 # 用'read'命令 (这也是一种赋值): 30 echo -n "Enter \"a\" " 31 read a 32 echo "The value of \"a\" is now $a." 33 34 echo 35 36 exit 0 |
例子 4-3. 简单且奇特的变量赋值
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 # 如果没有引号,则会删除多余tab键和空白符 19 echo 20 echo "$a" # 加了双引号,则能够原样保留空白符 21 # (参考"引用"章节) 22 23 exit 0 |
1 # 摘自/etc/rc.d/rc.local 2 R=$(cat /etc/redhat-release) 3 arch=$(uname -m) |