shell脚本简单来说就是:将需要执行的命令保存到文本中,按照顺序执行。
它是解释型的,意味着不需要编译。
准确叙述
若干命令 + 脚本的基本格式 + 脚本特定语法 + 表达的意思= shell脚本
shell 命名:Shell脚本名称命名一般为英文、大写、小写,后缀以.sh 结尾
不能使用特殊符号、空格。
shell脚本名称要写得一眼可以看出它是有什么功能的。
编写shell脚本的时候,最前面要加上一行:#!/bin/bash,因为linux里面不仅仅只有bash一个解析器,还有其它的,它们之间的语法会有一些不同,所以最好加上这一句话,告诉系统要用这个解析器。
shell脚本变量不能以数字、特殊符号开头,可以使用下划线_,但不能用破折号--
1.命令和文件自动补全
Tab只能补全命令和文件。
2.常用的快捷键
ctrl+c:终止前台运行的程序
ctrl+d:退出
ctrl+l:清屏(clear)
ctrl+a:光标移到命令行的最前端
ctrl+e:光标移到命令行的后端
ctrl+u:删除光标前所有字符
ctrl+k:删除光标后所有字符
3.常用的通配符
*:代表0到无穷多个任意字符
?:代表某一个任意字符
[abcd]:代表a,b,c,d中的任何一个字符
[0-9]:代表0到9之间的任何一个数字
[^abcd]代表除a,b,c,d之外的任何一个字符
①双引号"":在双引号中特殊符号都没有特殊含义
但是“$”、“`”、“\”是例外,拥有“调用变量的值”“引用命令”“转移符”的特殊含义
②单引号'':在单引号中所有的特殊符号,如“$”和“`”(反引号)都没有特殊含义
“”双引号里面的$符号有调用到,最终输出的是变量a的值。而在‘’单引号里面没有调用到$符号,最终输出的是单引号里面的内容。
③反撇号``:反引号括起来的内容是系统命令,在bash中会先执行他。和$()作用一样,不过推荐使用$(),因为反引号非常容易看错。下面介绍$()时会说。
打开lx文件夹;创建一个shell脚本文件;查看脚本(返回空);编辑脚本里面的指令;查看脚本
在shell脚本中,#开头的行是代表注释
注意点:运行shell脚本的方式有两种
①以bash filename 直接在命令行指定解释器执行
②以./filename运行,不过会提示权限不足,这时候需要另外一条指chmod +x filename,这条指令的意思是赋予脚本文件权限,以标准方式执行脚本。
1.$()和反引号的作用一样,用来引用系统命令
2.$用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值
3.\转移符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出“$”符号,而不当做事变量引用
在命令终端提示用户输入一些什么内容,然后在用户输入完内容后,会打印刚刚用户输入的内容,所以这里要用到read这个命令。
输入命令:read 命令。一般情况下,按下enter键,停止输入。
常用参数如下:
-p 显示提示信息
-s 不显示用户输入的内容,如密码
-t 设定等待时间,超过等待时间后自动跳过,以秒为单位
在输入pas的时候不会显示内容,因为脚本中写到了-s,它会不显示用户输入的内容,只在最后显示。read命令一般结合输出命令echo来使用。
echo的作用:输出字符串
格式 :echo"字符串内容"
第一个指令上有空格,可是打印出来的确实没有空格的,
这是因为系统默认空格是多打了的,不打印出来。
而加了双引号之后,输入的内容则会全部打印出来。
命令 > 文件 |
将标准输出重定向到一个文件中(清空原有文件的数据) |
命令 >> 文件 |
将标准输出重定向到一个文件中(追加到原有内容的后面) |
shell中的大括号(也叫花括号) "{}"的用法:
如果想要的结果为123df而不是456的话,就要加上{},目的是为了明确$的范围。
{}里面包含着集合,如果要输出多个集合的话,则集合的首尾中间要加上..
例如:要输出1-10txt的集合,则命令为echo {1..10}.txt
shell中的小括号()的用法放置命令,格式$(hostname),如同`hostname` 。
解释器遇到这种格式,会先执行命令,得到结果再输出。
双重小括号(())
算术运算 $((1+2*3))
和我们传统认识上的加减乘除用的小括号不同,这里一定要双重小括号