📄 varassignment.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><HTML><HEAD><TITLE>变量赋值</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINKREL="HOME"TITLE="高级Bash脚本编程指南"HREF="index.html"><LINKREL="UP"TITLE="变量和参数的介绍"HREF="variables.html"><LINKREL="PREVIOUS"TITLE="变量替换"HREF="varsubn.html"><LINKREL="NEXT"TITLE="Bash变量是不区分类型的"HREF="untyped.html"></HEAD><BODYCLASS="SECT1"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLESUMMARY="Header navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">高级Bash脚本编程指南: 一本深入学习shell脚本艺术的书籍</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><AHREF="varsubn.html"ACCESSKEY="P">前一页</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom">4. 变量和参数的介绍</TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="untyped.html"ACCESSKEY="N">下一页</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="SECT1"><H1CLASS="SECT1"><ANAME="VARASSIGNMENT">4.2. 变量赋值</A></H1><P></P><DIVCLASS="VARIABLELIST"><DL><DT><ANAME="EQREF"></A><SPANCLASS="TOKEN">=</SPAN></DT><DD><P>赋值操作(<EM>前后都不能有空白</EM>)</P><DIVCLASS="CAUTION"><P></P><TABLECLASS="CAUTION"WIDTH="90%"BORDER="0"><TR><TDWIDTH="25"ALIGN="CENTER"VALIGN="TOP"><IMGSRC="./images/caution.gif"HSPACE="5"ALT="Caution"></TD><TDALIGN="LEFT"VALIGN="TOP"><P>因为<AHREF="comparison-ops.html#EQUALSIGNREF">=</A>和<AHREF="comparison-ops.html#EQUALREF">-eq</A>都可以用做条件测试操作, 所以不要与这里的赋值操作相混淆. </P><P>注意: <SPANCLASS="TOKEN">=</SPAN>既可以用做条件测试操作, 也可以用于赋值操作, 这需要视具体的上下文而定. </P></TD></TR></TABLE></DIV><DIVCLASS="EXAMPLE"><HR><ANAME="EX15"></A><P><B>例子 4-2. 简单的变量赋值</B></P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="90%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="PROGRAMLISTING"> 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</PRE></FONT></TD></TR></TABLE><HR></DIV><DIVCLASS="EXAMPLE"><HR><ANAME="EX16"></A><P><B>例子 4-3. 简单和复杂, 两种类型的变量赋值</B></P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="90%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="PROGRAMLISTING"> 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</PRE></FONT></TD></TR></TABLE><HR></DIV><P>使用<ICLASS="FIRSTTERM">$(...)</I>机制来进行变量赋值(这是一种比<AHREF="commandsub.html#BACKQUOTESREF">后置引用(反引号`)</A>更新的一种方法). 事实上这两种方法都是<AHREF="commandsub.html#COMMANDSUBREF">命令替换</A>的一种形式.</P><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="90%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="PROGRAMLISTING"> 1 # From /etc/rc.d/rc.local 2 R=$(cat /etc/redhat-release) 3 arch=$(uname -m)</PRE></FONT></TD></TR></TABLE></P></DD></DL></DIV></DIV><DIVCLASS="NAVFOOTER"><HRALIGN="LEFT"WIDTH="100%"><TABLESUMMARY="Footer navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top"><AHREF="varsubn.html"ACCESSKEY="P">前一页</A></TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="index.html"ACCESSKEY="H">首页</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top"><AHREF="untyped.html"ACCESSKEY="N">下一页</A></TD></TR><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top">变量替换</TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="variables.html"ACCESSKEY="U">上一级</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top">Bash变量是不区分类型的</TD></TR></TABLE></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -