目录
♡♡♡4 运算符(+、=)、表达式求值($[]、let、expr)
♡♡♡1 变量的赋值和使用($):
♡♡在shell中使用变量不需要事先声明,直接使用等号赋值。
♡♡当需要存取变量时,就要使用一个字符来进行变量替换。在bash中,美元符号“$”用于对一个变量进行解析。shell在碰到带有“$”的变量时会自动将其替换为这个变量的值。
示例:
#! /bin/bash
#将一个字符串赋值给变量log
log="tuesday"
echo "the value is:"
#美元符号($)用于变量替换
echo $log
执行效果:
注意:变量只在其所在的脚本中有效。在上面这个脚本退出之后,变量log就失效了,此时在shell中试图查看log的值将什么也得不到
但是使用source命令可以强行让一个脚本影响其父shell环境,比如
另一个与之相反的命令是export,export让脚本可以影响其子shell环境,比如
使用unset命令可以手动注销一个变量
unset count
♡♡♡2 变量替换(\、{}、):
♡♡如果希望输出$符号,则要使用转义字符“\”,告诉shell忽略特殊字符的特殊含义。如下所示
♡♡shell提供了花括号{}来限定一个变量的开始和结束。通常在紧跟变量输出字母后缀时,就必须使用这个功能,如下所示
♡♡♡3 bash 引号规则
♡♡双引号(解释):
阻止shell对大多数特殊字符(例如#)进行解释。但“$”、“`”和“””仍然保持其特殊含义。
♡♡单引号(不解释):
阻止shell对所有字符进行解释。
♡♡倒引号(执行命令):
“`”这个符号位于Esc键的下方。当用倒引号括起一个shell命令时,这个命令将会被执行,执行后的输出结果将作为这个表达式的值。倒引号中的特殊字符一般都会被解释。
♡♡♡4 运算符(+、=)、表达式求值($[]、let、expr)
和c++里大致一样,值得注意的是,在shell表示“相等”时,“==”和“=”在大部分情况下不存在差异,这和c/c++里有些不同。
例子:
为什么结果不是3?
因为shell脚本语言是一种“弱类型”的语言,它并不知道变量num中保存的是一个数值,因此在遇到num=$num+2时,shell只是单纯地把两者连在一起作为新的值赋给变量num
但是加上$[]的表达形式就可以告诉shell应该对其中的表达式求值
另一种表达形式也可以,let用于计算整数表达式的计算,如下:
expr命令也可以对表达式执行求值操作:
expr 1 + 2 #结果输出为3,需要注意的是它们之间都有个空格