您的位置:首页 > 运维架构 > Shell

SHELL脚本入门篇——符号

2016-08-08 17:24 323 查看
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先执行该命令,分别为反引号`和$()



$(())可以进行算术代换,但仅仅只能用于+-*/和(),并且只能用于整数

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell脚本 批处理