SHELL脚本入门篇——符号

来源:互联网 发布:喀秋莎录屏软件8.0 编辑:程序博客网 时间:2024/05/18 13:24

shell基础知识
shell脚本与Windows/Dos下的批处理相似,都是将各类命令预先放入到一个程序文件,主要方便管理员进行设置和管理用的。但shell脚本比Windows下的批处理更强大。
shell脚本第一句开头为#!,注释为在需注释的行前面加上#
shell和shell脚本的区别?
shell是一个命令行解释器,本身是一个用c语言编写的程序,是用户使用Linux的桥梁,他的作用是遵循一定的语法将输入的命令加以解释并传给系统。而shell脚本是根据shell编写的一个纯文本文件,将一些shell指令写在里面,然后用bash或sh告诉shell执行脚本文件。
shell执行指令的过程
shell在执行指令的时候,需要判断命令是内置命令还是外部命令,内置命令直接执行,当为外部命令时,shell为指令开辟一个子进程,然后进程程序替换,父进程等待子进程退出。
shell 脚本执行指令的过程
在执行shell脚本的每一条指令也都需要判断命令是否是内置命令,若为内置命令则直接在当前的进程内执行,否则开辟子进程,当前进程等待子进程的退出,后面的所有命令类似。
常用内指命令echo, eval, exec, export, readonly, read, shift, wait和点(.)
具体内容参考此博客
这里写链接内容
shell变量
shell中变量分为本地变量和环境变量,环境变量是任何进程都有的概念,本地变量是shell特有的概念,本地变量只存在当前shell进程。
env | grep 变量名 查看环境变量
set | grep 变量名 查看变量
export 变量名 可以将本地变量转换为环境变量
unset 变量名 删除已定义的变量
这里写图片描述
这里写图片描述
在使用变量时,将变量用{}包起来,也可在不引起歧义的情况下直接使用
echo echo{变量名}
这里写图片描述
shell中所有的变量均是字符串类型的,使用未定义的变量,则该值为空。
文件名替换:
通配符:,例:rm -rf .c,所有以.c结尾的文件都被删除
匹配一个任意字符,例:rm -f test?.c 所有test后只有一个字符的test?.c文件均被删除
[若干字符]:匹配方括号中任意一个字符的一次出现。例:test[56];结果为test[5],test[6],例:rm -rf test[0-9]
单引号和双引号
单引号中的字符仅仅是字面值,双引号中的字符在运行时会对字符进行解析。
这里写图片描述

*转义字符*
和c语言类似,\在shell中被用作转义字符,用于去除紧跟其后的单个字符的特殊意义(回车除外)。
例如创建一个$$文件
这里写图片描述
有时候\也不能避免因为特殊字符创建文件失败,例如创建-fiel文件,只能采取下面两种方法
这里写图片描述

有两个命令可以让shell先执行该命令,分别为反引号`和$()
这里写图片描述
$(())可以进行算术代换,但仅仅只能用于+-*/和(),并且只能用于整数
这里写图片描述

0 0