Shell脚本的符号详解程序员

1、概念:
Shell是一门非编译型的解释型语言。交互式是指指令一条一条的执行,而批处理是指把所有指令一次性执行完。

2、执行方式:
(1)./file.sh
这里写图片描述

(2)/bin/bash
这里写图片描述

3、Shell变量
(1)环境变量:环境变量可以从父进程传给子进程。
(2)本地变量:只存在于当前shell进程,用set命令可以显示当前shell定义的所有变量。环境变量是所有进程都有的变量,而本地变量是shell特有的概念。在shell中定义或赋值一个变量,等号两边不能有空格,否则会被解释器解释为命令或参数。
(3)删除变量:用set可以删除环境变量或者本地变量

4、变量引用
如果一个变量叫做VARNAME,用 VARNAME VARNAME表示它的值。
【例】
这里写图片描述

注意:在定义变量时不用 , 。和C语言不同的是,Shell变量不需要明确定义类型。事实上,Shell变量的值都是字符串,比如我们定义VAR=45,其实VAR的值是字符串45,而非整数45。Shell变量不需要先定义后使用,如果对一个没有定义的变量取值,则值为空字符串。

5、文件名代替
(1)* :匹配0个或多个任意字符。
(2)? :匹配一个任意字符。
(3)[] :匹配方括号中任意一个字符的一次出现。
【例】
这里写图片描述
注意:Globbing所匹配的文件名是由Shell展开的,也就是说在参数还没有传给程序之前已经展开了。

6、命令代换:
(1)或$():变量代换,即定义一个命令存放里的命令输出。
【例1】用“代换
这里写图片描述

【例2】用$()代换
这里写图片描述

(2) (()) (())中的shell变量值(字符串)转换成整数。
【例】
这里写图片描述
注:$(())中只能用+-*/和()运算符,并且只能做整数运算。

7、转义字符/
/在shell中被用作转义字符,用于去除紧跟其后的单个字符的特殊意义(回车除外),即:使紧跟/后的字符取字面值。
【例】
这里写图片描述

有一个字符虽然不具有特殊含义,但是要用它作为文件名很麻烦。直接命名不行,即使转义了也不行。因为各种UNIX命令都把-号开头的命令行参数当做命令的选项,而不会作为文件名。但是,如果非要那样做,有两种办法:
【例】
这里写图片描述

8、单引号
Shell脚本中的单引号是字符串的界定符,而不是字符界定符。单引号用于保持引号内所有字符的字面值,即使引号内的/和回车也不例外,但是字符串中不能出现单引号。如果引号没有配对就输如回车,Shell会给出续行提示符,要求用户把引号配对上。
【例】
这里写图片描述

9、双引号
双引号用于保持引号内所有字符的字面值(回车也不例外),但是以下情况除外:
(1)$加变量名表示取变量的值。
【例】
这里写图片描述

(2)反引号仍表示命令替换。
【例】
这里写图片描述

(3)在双引号中,/含有特殊意义的情况:
1)$:表示$的字面值。
【例】
这里写图片描述

2)`:表示`的字面值(反引号)。
【例】
这里写图片描述

3)/”:表示”的字面值。
4)/:表示/的字面值。
【例】
这里写图片描述

(5)除以上情况之外,在其他字符面前的/无特殊含义,只表示字面值。
【例】
这里写图片描述

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/1649.html

(0)
上一篇 2021年7月15日
下一篇 2021年7月15日

相关推荐

发表回复

登录后才能评论