Shell编程基础入门(Bash|变量与输入输出重定向2&1)

【1】什么是Shell

① shell定义

下面是从百度百科摘取的定义。

在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

从《Linux CommanLine》中摘取的释义:

一说到命令行,我们真正指的是shell。shell 就是一个程序,它接受从键盘输入的命令,然后把命令传递给操作系统去执行。几乎所有的Linux 发行版都提供一个名为bash 的来自GNU项目的shell 程序。“bash”是“Bourne Again SHell”的首字母缩写,所指的是这样一个事实,bash 是最初Unix 上由Steve Bourne 写成shell 程序sh 的增强版。

在Linux/Unix中示意图如下(橘黄色的是内核):

Shell编程基础入门(Bash|变量与输入输出重定向2&1)

5.2 其他特殊符号

符 号 作 用
单引号。在单引号中所有的特殊符号,如“$”和“`”(反引号)都没有特殊含义。
双引号。在双引号中特殊符号都没有特殊含义,但是“$”、“`”和“”是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。
反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和作用一样,不过推荐使用$(),因为反引号非常容易看错。
$() 和反引号作用一样,用来引用系统命令。
() 用于一串命令执行时,()中的命令会在子Shell中运行
{} 用于一串命令执行时,{}中的命令会在当前Shell中执行。也可以用于变量变形与替换。
[] 用于变量的测试。
# 在Shell脚本中,#开头的行代表注释。
$ 用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值。
转义符,跟在之后的特殊符号将失去特殊含义,变为普通字符。如将输出符号,而不当做是变量引用。

5.3 小括号()与大括号{}

如果是用于一串命令的执行,那么小括号和大括号的主要区别在于:

  • ()执行一串命令时,需要重新开一个子shell进行执行
  • {}执行一串命令时,是在当前shell执行;
  • ()和{}都是把一串的命令放在括号里面,并且命令之间用;号隔开;
  • ()最后一个命令可以不用分号;
  • {}最后一个命令要用分号;
  • {}的第一个命令和左括号之间必须要有一个空格;
  • ()里的各命令不必和括号有空格;
  • ()和{}括号里面的某个命令的重定向只影响该命令,但括号外的重定向则影响到括号里的所有命令。

【3】Bash的变量

① Bash中的变量

在定义变量时,有一些规则需要遵守:

  • 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name”则是错误的。
  • 在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。
  • 变量用等号连接值,等号左右两侧不能有空格。
  • 变量的值如果有空格,需要使用单引号或双引号包括。如:“test=“hello world!””。其中双引号括起来的内容都拥有特殊含义,而单引号括起来的内容都是普通字符。
  • 在变量的值中,可以使用转义符。
  • 如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用包含或用包含变量名
  • 如果是把命令的结果作为变量值赋予变量,则需要使用反引号或包含命令
  • 环境变量名建议大写,便于区分

变量叠加实例如下:


② 变量的分类

  • 用户自定义变量:这种变量是最常见的变量,由用户自由定义变量名和变量的值。
  • 环境变量:这种变量中主要保存的是和系统操作环境相关的数据,比如当前登录用户,用户的家目录,命令的提示符等。环境变量的变量名可以自由定义,但是一般对系统起作用的环境变量的变量名是系统预先设定好的。
  • 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
  • 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

2.1 变量查看

语法格式:,直接使用set命令,会查询系统中所有的变量,包含用户自定义变量和环境变量。
选项:

set -u可以用来测试变量是否存在。变量值为空与变量是否存在是两个概念。

2.2 变量删除

语法格式:


③ 环境变量

3.1 设置环境变量

3.2 环境变量的查询和删除

env命令和set命令的区别是,set命令可以查看所有变量,而env命令只能查看环境变量。

Shell编程基础入门(Bash|变量与输入输出重定向2&1)
常见变量说明:
BASH=/bin/bash 	#Bash的位置BASH_VERSINFO=([0]="4" [1]="1" [2]="2" [3]="1" [4]="release"[5]="i386-redhat-linux-gnu") 	#Bash版本BASH_VERSION='4.1.2(1)-release' 	#bash的版本COLORS=/etc/DIR_COLORS 	#颜色记录文件HISTFILE=/root/.bash_history 	#历史命令保存文件HISTFILESIZE=1000 	#在文件当中记录的历史命令最大条数来源:流烟默
                                                        

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月15日
下一篇 2022年10月15日

相关推荐