目录
首先创建我们的第一个脚本程序:
创建
修改执行权限
运行
至此,我们的第一个脚本程序就执行好了
♡♡在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
♡♡如果希望输出$符号,则要使用转义字符“\”,告诉shell忽略特殊字符的特殊含义。如下所示
♡♡shell提供了花括号{}来限定一个变量的开始和结束。通常在紧跟变量输出字母后缀时,就必须使用这个功能,如下所示
♡♡双引号:
阻止shell对大多数特殊字符(例如#)进行解释。但“$”、“`”和“””仍然保持其特殊含义。
♡♡单引号:
阻止shell对所有字符进行解释。
♡♡倒引号:
“`”这个符号位于Esc键的下方。当用倒引号括起一个shell命令时,这个命令将会被执行,执行后的输出结果将作为这个表达式的值。倒引号中的特殊字符一般都会被解释。
和c++里大致一样,值得注意的是,在shell表示“相等”时,“==”和“=”在大部分情况下不存在差异,这和c/c++里有些不同。
例子:
为什么结果不是3?
因为shell脚本语言是一种“弱类型”的语言,它并不知道变量num中保存的是一个数值,因此在遇到num=$num+2时,shell只是单纯地把两者连在一起作为新的值赋给变量num
但是加上$[]的表达形式就可以告诉shell应该对其中的表达式求值
另一种表达形式也可以,如下: