用“=”连接变量名和变量值 设置变量值时,“=”左右不能直接连接空
如果 value 不包含任何空白符(例如空格、Tab 缩进等),那么可以不使用引号; 如果 value 包含了空白符,那么就必须使用引号包围起来。 试以单引号' '包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出。 以双引号" "包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。
修改输出:
追加输出:”$variable_name ”或 ${variable_name }
export
$:查看当前Bash的进程号(PID)
?:返回上一个命令的状态码,一般用0表示成功非0表示失败异常
输出重定向是指命令的结果不再输出到显示器上,而是输出到其它地方,一般是文件中。 在命令后输入大于号“>”并且后跟一个文件名,对原文件的内容进行了“覆盖”,即清空原文件内容。 在命令后输入两个大于号“>>”并且后跟一个文件名,表示在原文件的基础上“追加”新内容。
将file1作为输入,将对file1的操作结果输出到file2
从键盘读取数据,直到遇到END才结束
可以将两个或者多个命令(程序或者进程)连接到一起,把一个命令的输出作为下一个命令的输入,以这种方式连接的两个或者多个命令就形成了管道(pipe)。 功能:一个命令的输出成为另一个命令的输入 使用管道符号“|”连接两个命令,左侧命令的输出成为右侧命令的输入,可以在一条命令中多次使用管道符号以实现更复杂的操作
|
第二种方式更好,因为第一种方式把命令用反引号` `(位于 Esc 键的下方)包围起来,反引号和单引号非常相似,容易混淆。第二种方式把命令用$()包围起来,区分更加明显,所以推荐使用这种方式。
${variable_name}具有截取功能 格式为${变量名:开始处(起始为0):步长}
在不同的作用域中,同名的变量不会相互干涉,就好像 A 班有个叫小明的同学,B 班也有个叫小明的同学,虽然他们都叫小明(对应于变量名),但是由于所在的班级(对应于作用域)不同,所以不会造成混乱。但是如果同一个班级中有两个叫小明的同学,就必须用类似于“大小明”、“小小明”这样的命名来区分他们。
所谓全局变量,就是指变量在当前的整个 Shell 会话中都有效。每个 Shell 会话都有自己的作用域,彼此之间互不影响。在 Shell 中定义的变量,默认就是全局变量。 这说明全局变量 a 仅仅在定义它的第一个 Shell 中有效,对其它 Shell 没有影响。这很好理解,就像小王家和小徐家都有一部电视机(变量名相同),但是同一时刻小王家和小徐家的电视中播放的节目可以是不同的(变量值不同)。 1.sh 的代码如下: 2.sh 的代码如下: 打开一个 Shell 窗口,输入以下命令: 从输出结果可以发现,在 Shell 会话中以命令行的形式定义的变量 a,在 1.sh 中有效;在 1.sh 中定义的变量 b,在 2.sh 中也有效。 局部变量Shell 也支持自定义函数,但是 Shell 函数和 C/C++、Java 等其他编程语言函数的一个不同点就是:在 Shell 函数中定义的变量默认也是全局变量,它和在函数外部定义变量拥有一样的效果。请看下面的代码: a 是在函数内部定义的,但是在函数外部也可以得到它的值,证明它的作用域是全局的,而不是仅限于函数内部。
输出结果为空,表明变量 a 在函数外部无效,是一个局部变量。 环境变量全局变量只在当前 Shell 会话中有效,如果使用export命令将它导出,那么它就在所有的子 Shell 中也有效了,这称为“环境变量”。 注意:环境变量只能向下传递,不能向上传递 在一个 Shell 中创建子 Shell 最简单的方式是运行 bash 命令,如图 通过exit命令可以一层一层地退出 Shell。
可以发现,默认情况下,a 在子 Shell 中是无效的;使用 export 将 a 导出为环境变量后,在子 Shell 中就可以使用了。 |
| 将管道、find、grep结合进行练习。 |



