bash学习记录(二) bash中的变量和参数

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
2
3
4
5
6
7
bash$ variable1=23

bash$ echo variable1
//variable1

bash$ echo $variable1
//23

在(“..”)里引用不会干涉变量的引用,这叫做局部引用(partial quoting),也叫弱引用.但使用(‘..’)单引号会直接把变量名打印出来,不会引用变量,叫做全引用(full quoting),也叫做强引用。

注意:其实使用$variable1和使用${variable1}是一样的但是某些语境下前者可能会出问题。

未初始化的变量有一个默认的的值为”null“而不是‘0’,并且bash中的变量不分类型。

变量分配(Variable Assignment) =

等号-> the assignment operator (no space before and after) 前后不能有空格

1
2
3
4
5
#举一个比较典型的小例子,之前不知道区别。。
a=`ls -l` # Assigns result of 'ls -l' command to 'a'
echo $a # Unquoted, however, it removes tabs and newlines.
echo
echo "$a" # The quoted variable preserves whitespace.

使用双引号扩起来的$a有空格,而没有双引号的是去掉空格的。

1
2
R=$(cat /etc/redhat-release)
arch=$(uname -m)

可以看出使用$()的作用和使用``的作用相同,都可以对命令进行包裹。

bash变量没有类型

不像其他的很多编程语言,bash脚本中的变量是没有类型的。无类型的变量是把双刃剑,一方面更加灵活,另一方面会渗透一些小的问题。

所以bash提供声明变量,会在后面的章节对声明变量的参数等信息详细列出来。

特殊的变量类型(Special Variable Types)

  • 本地变量:变量只能在代码块和函数中可见

  • 系统变量:变量影响shell的行为和用户的接口(比如设置Java环境变量)

    如果脚本需要设置环境变量那么就去 export ..

  • 位置参数:

    $0是脚本名称,1-9等对应其位置,10之后要使用大括号扩起来。$#对应最后一个元素

    使用shift命令可以将位置参数重新排列,实际上就是向左移动一级。

这次篇幅较小,主要讲了讲bash中的变量和位置参数的含义和使用,属于非常基础,非常容易理解的部分。

-------------本文结束感谢您的阅读-------------

本文标题:bash学习记录(二) bash中的变量和参数

文章作者:NanYin

发布时间:2018年04月11日 - 15:04

最后更新:2019年08月12日 - 13:08

原始链接:https://nanyiniu.github.io/2018/04/11/2018-4-11-bash_%E5%8F%98%E9%87%8F/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。