赋值操作符(它的左右两边不能有空白符)
不要搞混了=和-eq,-eq是比赋值操作更高级的测试。
注意:等于号(=)根据环境的不同它可能是赋值操作符也可能是一个测试操作符。
例子:简单的变量赋值
#!/bin/bash# 裸变量
echo
# 什么时候变量是“裸”的?比如说,变量名前面没有$?
#当变量被赋值而不是引用时,我们称它为是裸变量。
# 赋值
a=879
echo "The value of \"a\" is $a."
# 用命令'let'赋值。
let a=16+5
echo "The value of \"a\" is now $a."
echo
# 在一个for循环里赋值(其实,这是一种伪赋值):
echo -n "Values of \"a\" in the loop are: "
for a in 7 8 9 11
do
echo -n "$a "
done
echo
echo
# 用'read'命令 (这也是一种赋值):
echo -n "Enter \"a\" "
read a
echo "The value of \"a\" is now $a."
echo
exit 0
例子简单且奇特的变量赋值
#!/bin/basha=23 # 简单的情况echo $ab=$aecho $b# 现在,来一点奇怪的赋值(命令替换)a=`echo Hello!` # 把'echo'命令的结果赋值给变量'a'echo $a# 注意在一个#+的命令替换结构中包含一个感叹号(!),#+ 将不会工作。#+ 因为感叹号触发了Bash"历史命令机制"# 不过,在脚本里,历史命令机制是被禁用的.a=`ls -l` # 把'ls -l'命令的结果赋给变量'a'echo $a # 如果没有引号,则会删除多余tab键和空白符echoecho "$a" # 加了双引号,则能够原样保留空白符 # (参考"引用"章节)exit 0
变量赋值也可以使用$(...) 机制(它是比斜引号更新的方法). 它实际是命令替换的一种形式.