Shell变量、数据重定向和管道

在上一篇博客Shell功能、配置和插件中,介绍了为什么要使用shell,shell有哪些功能,如何使用oh my zsh来提高效率等,本篇重点介绍,shell中的变量的如何设置和读取数据,读取之后如何使用变量?每个程序一般都有输入和输出,让我们看看数据重定向如何处理输入和输出的?还有,Unix/Linux系统提供丰富的工具,我们如何将这些工具通过管道来组合成更加强大的宏工具呢?下面,由我来逐一详细介绍变量、数据重定向和管道。

Variable & Redirection & Pipe.png


Variable & Redirection & Pipe.png

变量 变量的作用

变量与其他程序设计语言一样,都是存储数据,然后被程序引用。相比于不使用变量,而是直接使用数据,存在两个问题:

当数据改变时,直接使用数据的时候却不能灵活地根据数据改变而随着改变,而使用变量却不同,它能够做到这点。

当数据发生变化时,如果想保证数据一致性,必须查找所有引用该数据的所有地方,然后将它修改,当下一次再需要修改时,也是像这种情况一样,是多么繁琐的事,而变量却不用,只需要修改变量值即可。

因此,变量具有可变性易于修改的两个特点。

变量的分类

在shell中,大概分为两种变量:环境变量局部变量,主要区别在于它们的使用范围不同,环境变量可以在父进程与子进程之间共享,而自定义变量只在本进程使用。举一个简单的例子来说明:

no share variable.png


no share variable.png

我首先设置一个shell变量devname=sam,然后输入bash打开一个新的shell,而这个shell是子进程,然后echo $devname输出变量值,变量值为空,最后exit退出子进程。

share variable.png


share variable.png

但使用export devname设置环境变量后,再次进入输入bash进入子进程之后,echo $devname输出变量值,这次变量值是sam

查看环境变量env和set

如果想查看系统中以及自定义有哪些环境变量,可以使用env命令:

env command.png


env command.png

而set命令不仅能查看环境变量,还可以查看与shell接口有关的变量,下面只截取一部分变量:

set command.png


set command.png

变量有哪些操作 显示echo $variable

如果你想显示某个变量的值,例如PATH,你只需要输入:

echo $PATH

echo command.png


echo command.png

注意上面一条命令,需要在变量名前加上一个符号$,这样才能访问变量

设置variable=value和取消unset

如果你想设置某个变量的值,只需在变量名和变量值之间用符号=连接就行了,例如:

set variable.png


set variable.png

由上面的输入命令echo $devname,显示结果为。由此可知,一开始如果没有设置某个变量时,它的是为。另外,设置变量的规则还需要几点注意:

在命名变量名时,变量名称只能是英文字母和数字,而且首字母不能是数字。下面演示一个错误的例子:

wrong variable name.png


wrong variable name.png

等号=两边不能有空格

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/14960.html