linux ——shell 脚本
linux—shell 脚本 精简基础 2018/10/30 13:20:18
Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具,Linux/UNIX系统的底层及基础应用软件的核心大部分涉及Shell脚本的内容。每一个合格的Linux系统管理员或运维工程师,都需要熟练的编写Shell脚本语言,并能够阅读系统及各类软件附带的Shell脚本内容。只有这样才能提升运维人员的工作效率,适应日益复杂的工作环境,减少不必要的重复工作,从而为个人的职场发展奠定较好的基础。
2、linux正则表达式的三剑客分别是【grep , sed , awk]
3、默认脚本一般都是.sh结尾
4、脚本的固定格式必须有的
1>——#!/bin/bash 解释器
2>——# -*- coding:utf-8 -*-
3>——# author:wangxiong
二、什么是shell?
- Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出屏幕返回给用户。
- 这种对话方式可以是:
1)交互的方式:从键盘输入命令,通过/bin/bash的解释器,可以立即得到shell的回应
2)非交互的方式:脚本
下图黄色部分就是命令解释器shell

Shell的英文意思是贝壳的意思,命令解释器Shell像一个贝壳一样包住系统核心。
三、Shell执行命令分为两种方式:
- 内置命令:如讲过的cd,pwd,exit和echo等命令,当用户登录系统后,shell以及内置命令就被系统载入内存,并且一直运行。
- 一般命令:如ls,磁盘上的程序文件-->调入-->执行命令
四、什么是Shell 脚本
当linux命令或语句不在命令行下执行(严格说,命令行也是shell),而是通过一个程序文件执行时,该程序就被称为Shell脚本或Shell程序
用户可以在Shell脚本中敲入一系列的命令及语句组合。这些命令,变量和流程控制语句等有机的结合起来就形成一个功能强大的Shell脚本。脚本注释
在Shell脚本中,跟在#后面的内容表示注释。注释部分不会被执行,仅给人看。注释可以自成一行,也可以跟在命令后面,与命令同行。要养成写注释的习惯,方便自己与他人。
最好不用中文注释,因为在不同字符集的系统会出现乱码。
Shell脚本的执行
五、 Shell脚本执行的四种方式
1)bash scripts-name或sh script-name(推荐使用)
这种方法是当脚本本身没有可执行权限时常使用的方法。
2)path /script-name 或./scripts-name(全路径或当前路径执行脚本)
这种方法首先需要给脚本文件可执行权限。3)source scripts-name或. scripts-name #注意“.”点号,且点号后有空格。
source 或.在执行这个脚本的同时,可以将脚本中的函数和变量加载到当前Shell。不会产生子shell。又有点像nginx的include功能。
六、Shell脚本开发的规范和习惯
1)开头指定脚本解释器
2)开头加版本版权等信息,可配置~/.vimrc文件自动添加
3)脚本不要用中文注释,尽量用英文注释
4)脚本以.sh为扩展名
5)放在统一的目录
6)代码书写优秀习惯
a,成对的内容一次性写出来,防止遗漏,如[],'',""等
b,[]两端要有空格,先输入[]退格,输入2个空格,再退格写。
c,
流程控制语句一次书写完,再添加内容。
if 条件then 内容fid,通过缩进让代码易读
f,脚本中的引号都是英文状态下的引号,其他字符也是英文状态。
变量类型
七、变量分为两类:
1)环境变量(也可称为全局变量);可以在创建他们的Shell及派生出来的子shell中使用。环境变量又可以分为自定义环境变量和bash内置的环境变量。
2)局部变量(普通变量):只能在创建他们的shell函数或shell脚本中使用,还记得前面的$user?我们创建的一般都是普通变量。
环境变量
- 环境变量用于定义Shell的运行环境,保证Shell命令的正确执行,Shell通过环境变量来确定登录用户名,命令路径,终端类型,登录目录等,所有的环境变量都是全局变量,可用于所有子进程中,包括编辑器,shell脚本和各类应用。但crond计划任务除外,还需要重新定义环境变量。
- 环境变量可以在命令行中设置,但用户退出时这些变量值也会丢失,因此最好在用户家目录下的.bash_profile文件中或全局配置/etc/bashrc,/etc/profile文件或者/etc/profile.d/目录中定义。将环境变量放入profile文件中,每次用户登录时这些变量值都将被初始化。
- 通常,所有环境变量均为大写。环境变量应用于用户进程前,都应该用export命令导出。例如:export chensiqi=1
- 有一些环境变量,比如HOME,PATH,SHELL,UID,USER等,在用户登录之前就已经被/bin/login程序设置好了。通常环境变量定义并保存在用户家目录下的.bash_profile或/etc/profile文件中。
局部变量
定义局部变量
局部变量在用户当前的shell生存期的脚本中使用。例如,局部变量chensiqi取值为chensiqi098,这个值只在用户当前shell生存期中有意义。如果在shell中启动另一个进程或退出,局部变量chensiqi值将无效。
普通字符串变量定义
变量名=value2、变量名=‘value’3、变量名=“value”shell中变量名及变量内容的要求
一般是字母,数字,下划线组成,且以字母开头。如chensiqi,chensiqi123,chensiqi-training。变量的内容,可以使用单引号或双引号印起来,或不加引号。
虽然变量可以以下划线开头,但类似这种变量都是比较特殊的,都是系统自己用的。我们尽量少用。
脚本中符号的意义;
if 如果
elif 否则如果
then 那么
fi 结尾
-eq equal等于
-ne not equal 不等于
-gt greater than大于
-ge greater equal大于等于
-lt less than小于
-le less equal 小于等于
read 交互命令
num 变量名
$#;取参数的个数
$*;把所有参数列出来
$@把所有参数列出来
$1;第一个参数
$2;第二个参数
$3;第三个参数
$4;第4个参数(后面的$5一次类推)
不同语言脚本的开头写法
#!/bin/sh#!/bin/bash#!/usr/bin/awk#!/bin/sed#!/usr/bin/tcl#!/usr/bin/expect#!/usr/bin/perl#!/usr/bin/env python
linux ——shell 脚本的更多相关文章
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- Linux Shell 脚本入门
linux shell 脚本格式 #!/bin/sh#..... (注释)命令...命令... 使用vi 创建完成之后需设置权限 chmod +x filename.sh 执行命令: ./filena ...
- Linux Shell脚本入门--cut命令
Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields &l ...
- Linux Shell脚本攻略 读书笔记
Linux Shell脚本攻略 读书笔记 这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝:最有价值的当属文本处理,对这块我单独整 ...
- 阿里Linux Shell脚本面试25个经典问答
转载: 阿里Linux Shell脚本面试25个经典问答 Q:1 Shell脚本是什么.它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令.作为系统管理员,我们经常需要使用多个命 ...
- Linux Shell脚本教程
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- Linux shell 脚本攻略之统计文件的行数、单词数和字符数
摘自:<Linux shell 脚本攻略>
- Linux shell 脚本攻略之创建不可修改文件
摘自:<Linux shell 脚本攻略>
随机推荐
- 咸鱼入门到放弃7--jsp<二>jsp常用标签
一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...
- (二)文档请求不同源之flash跨域
对于FLash,IE是认object标签的,但是FF和Chrome是认embed标签的. 1.客户端 <param name="allowScriptAccess" valu ...
- java 多态 向上 向下转型
向上转型 将子类对象当作父类对象 子类对象------>父类对象 先实例化子类 父类 父类对象 = 子类实例 package test2; class Father{ public vo ...
- python基础一 ------排序和查找算法
插入排序; 假设数组长度为n,先从第二个元素开始,与前一个元素比较,之后将较小的元素 放在前面,现在前两个元素是有顺序的,这时取第三个元素,与前一个元素(也就是第二个)比较,较小的放在前面 ...
- 操作mysql(import pymysql模块)
pymysql模块 import pymysql #1.连上数据库.账号.密码.ip.端口号.数据库 #2.建立游标 #3.执行sql #4.获取结果 #5.关闭游标 #6.连接关闭 #charest ...
- T分布
# T分布 # 1.T分布是统计分布的一种,同卡方分布(X2分布),F分布并称为三大分布 2.T分布又叫student-t分布,常用于根据小样本来估计呈正太分布且方差值未知的样本的均值(如果总体的方差 ...
- js以键值对的方式获取URL的参数
在前端日常的开发中,大多数时候我们只需用js获取到url中的参数即可,这个实现起来也很方便如: function getQueryString(value) { const reg = new Reg ...
- 图片编辑工具GIMP
今天修改图片: 给图片添加alpha通道,选中要删去的部分,就会变成透明,要保存为png格式 文库参考: http://wenku.baidu.com/link?url=HR1lKoBKS1xbhUJ ...
- __x__(46)0910第六天__框架集
框架集frameset 和 内联框架iframe 的作用类似: 在一个页面中,引入其他的外部html页面. 框架集可以同时引入多个页面. 在 html5 中,推荐使用框架集,而不推荐使用iframe ...
- mobile_像素
document.documentElement.clientWidth 不包含滚动条 window.innerWidth ...