shell脚本--符号篇

来源:互联网 发布:嫖相 知乎 编辑:程序博客网 时间:2024/05/16 08:56

shell有两种执行模式:
1. 脚本模式
2. 批量模式

shell脚本语言的特点:
1. shell是一门弱类型语言
2. shell是一门解释型语言
3. shell是一门非编译型语言

shell执行脚本:
例子: 建立test.sh文件。

#! /bin/bashlspwdtouch fileecho "hello word" >filecat file

shell脚本中用#表示注释,#处于第一行开头除外,它表示该脚本使用后面的/bin/bash解释执行;
有两种执行方式:
1. 给脚本文件加上可执行权限: chmod +x test.sh
2. 第二种执行方式: /bin/bash test.sh

这里写图片描述

shell会fork一个子进程并调用exec执行 test.sh这个程序;exec如果要执行的是一个文本文件,
并且第一行用了Shellbang指定了解释器,则用解释器程序的代码段替换当前进程,并且从解释器
的_start开始执行,而这个文本文件被当做命令行参数传递给解释器。

pwdcd ..pwd

这里写图片描述

这里cd..命令改变的是子shell的PWD,而不会影响到交互式shell

我们可以使用这两种命令使它不会创建子shell,而是直接在交互式shell下执行。

. ./test.shsource ./test.sh

这里写图片描述

shell变量:

环境变量可以从父进程传递给子进程。
本地变量:只存在与当前shell进程,环境变量是任何进程都具有的概念;而本地变量,
是shell特有的概念。

在shell中定义一个变量
MYENV=hello
注意:等号两边不能有空格,否则会被解释成命令和命令行参数。
这里写图片描述

这里写图片描述

变量引用
如果一个变量叫做myenv,用myenv,使myenv,表示它的值;
下面通过两个例子看看它们的区别:
这里写图片描述

注意:在定义变量时不用$,取变量值时要用$

文件名代换:
通配符*表示:匹配0个或多个字符
?:匹配一个任意字符
[若干字符]:匹配方括号中任意一个字符的一次出现

命令行代换: · $()
这里写图片描述

算术代换:
(()) 或者$(())
这里写图片描述

转义字符\
比如创建一个文件名为“$ $”(中间有空格)的文件可以这样

touch \$\ \$

还有一个字符“-”要用它创建文件名也很麻烦有两种方法:

touch ./-filetouch -- -file

单引号和双引号的区别:

和C语言不一样的是,shell脚本中的单引号和双引号一样都是字符串的界定符:

单引号用于保持引号内所有字符的字面值,即使引号内的\和回车也不例外,但是不能出现单引号;
双引号用于保持引号内所有字符的字面值,但是这些例外:
$变量名可以取变量的值,
反引号仍然表示命令替换
\$表示$的字面值
例子:
这里写图片描述

原创粉丝点击