bash学习记录(二) bash中的变量和参数
变量就是一个标签在脚本中代表数据,不过是给分配在电脑内存中的数据一个名字,经常会出现在数学计算和大量操作(manipulation of quantities)和字符串解析(string parsing)中。
变量置换 (Variable Substitution) $
The name of a variable is a placeholder for its value, the data it holds. Referencing (retrieving) its value is called variable substitution. 大致意思就是变量引用具体的值。使用$来引用变量 如
1 | bash$ variable1=23 |
在(“..”)里引用不会干涉变量的引用,这叫做局部引用(partial quoting
),也叫弱引用.但使用(‘..’)单引号会直接把变量名打印出来,不会引用变量,叫做全引用(full quoting
),也叫做强引用。
注意:其实使用$variable1和使用${variable1}是一样的但是某些语境下前者可能会出问题。
未初始化的变量有一个默认的的值为”null“而不是‘0’,并且bash中的变量不分类型。
变量分配(Variable Assignment) =
等号-> the assignment operator (no space before and after) 前后不能有空格
1 | #举一个比较典型的小例子,之前不知道区别。。 |
使用双引号扩起来的$a有空格,而没有双引号的是去掉空格的。
1 | R=$(cat /etc/redhat-release) |
可以看出使用$()的作用和使用``的作用相同,都可以对命令进行包裹。
bash变量没有类型
不像其他的很多编程语言,bash脚本中的变量是没有类型的。无类型的变量是把双刃剑,一方面更加灵活,另一方面会渗透一些小的问题。
所以bash提供声明变量,会在后面的章节对声明变量的参数等信息详细列出来。
特殊的变量类型(Special Variable Types)
本地变量:变量只能在代码块和函数中可见
系统变量:变量影响shell的行为和用户的接口(比如设置Java环境变量)
如果脚本需要设置环境变量那么就去
export ..
位置参数:
$0是脚本名称,1-9等对应其位置,10之后要使用大括号扩起来。$#对应最后一个元素
使用shift命令可以将位置参数重新排列,实际上就是向左移动一级。