SHELL编程入门简介
一、SHELL软件概念和应用场景
1) 学习Linux技术,不是为了学习系统安装、命令操作、用户权限、配置IP、网络管理,学习Linux技术重点:基于Linux系统部署和维护各种应用软件、程序(Apache、MYSQL、Redis、PHP、Nginx、Tomcat等);
2) 学习Linux技术,如果不懂SHELL编程,可以说不懂Linux,要想实现月薪过万,SHELL编程技能是运维人员必备的,那么SHELL编程到底是什么呢?
3) 通过Xshell和CRT远程连接Linux操作系统,默认会登陆到命令行终端,命令行终端提示符#、$,为什么要登陆命令行呢?其实可以直接登陆图形界面,最终用户是为了什么?为了能够控制和管理操作系统。
4) 而Linux操作系统核心是Linux内核(数以万计的代码组成的),默认用户是不能直接操作Linux内核的,借助第三方的工具:命令行、图形界面UI,默认登陆到Linux命令行终端,也称为SHELL命令行终端;
5) 用户基于SHELL命令行终端,可以输入各种Linux指令,当我们在SHELL命令行终端输入df –h命令按下Enter键时,Linux指令传递给SHELL(软件程序),经过SHELL解析,并且将解析之后内容传递给Linux内核,Linux内核接收以后会处理,处理完毕之后会将数据内容返回给SHELL,由SHELL经过解析最
终返回给用户终端;
6) 通常将SHELL称为Linux内核的外壳,用于连接用户和Linux内核之间桥梁,将SHELL称为中间件,SHELL外壳程序有很多种类和版本,查看Linux操作系统SHELL类型和SHELL版本:
#查看Linux默认的SHELL种类;
echo $SHELL
#查看默认的SHELL种类版本;
/bin/bash --version
7) SHELL和SHELL编程概念有什么区别呢?
- SHELL和SHELL编程是两个不同的概念,SHELL是用户和Linux内核之间沟通桥梁,而SHELL编程主要是基于SHELL解释器去编写各种指令或者代码;
- SHELL编程一定要有SHELL(SHELL解释器),SHELL解释器是SHELL编程的基石,没有SHELL就没有SHELL编程;
8) SHELL编程的核心思想?
SHELL编程是将Linux单个指令或者多个指令按照一定的逻辑关系和顺序堆积在文本文件(脚本文件)中,文本文件中的指令会通过SHELL解释器去解析,最终实现某个具体的功能和需求;
9) SHELL编程的产物是SHELL脚本文件(以.sh结尾命名的),而SHELL脚本文件是由单个命令或者多个命令堆积而成的,SHELL脚本中命令会通过SHELL解释器去解析和执行;
10) SHELL编程的意义和用途?
- 可以将手工重复的操作写入脚本文件,下次操作变得简单、快捷;
- 可以将繁杂的工作任务变成简单化、自动化的操作流程;
- 可以减轻运维人的工作量,提高运维人员的工作效率;
- 可以加快企业自动化运维的进程和脚步;
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
- 不同的Shell语言的语法有所不同,一般不能交换使用,最常用的shell是Bash,也就是Bourne Again Shell。Bash由于易用和免费,在日常工作中被广泛使用,也是大多数Linux操作系统默认的Shell环境。
- Shell、Shell编程、Shell脚本、Shell命令之前都有什么区别呢?简单来说Shell是一个整体的概念,Shell编程与Shell脚本统称为Shell编程,Shell命令是Shell编程底层具体的语句和实现方法。
二、SHELL脚本及Hello World
要熟练掌握Shell编程语言,需要大量的练习,初学者可以用Shell打印“Hello World”字符,寓意着开始新的启程!
- Shell脚本名称命名一般为英文、大写、小写;
- 不能使用特殊符号、空格来命名;
- Shell脚本后缀以.sh结尾;
- 不建议Shell命名为纯数字,一般以脚本功能命名。
- Shell脚本内容首行需以#!/bin/bash开头;
- Shell脚本中变量名称尽量使用大写字母,字母间不能使用“-”,可以使用“_”;
- Shell脚本变量名称不能以数字、特殊符号开头。
#!/bin/bash
#This is my First shell
#By author jfedu.net 2017
echo “ Hello World ”
#!/bin/bash # 固定格式,定义该脚本所使用的Shell类型;
#This is my First shell #号表示注释,没有任何的意义,SHELL不会解析它;
#By author jfedu.net 2017 #表示脚本创建人,#号表示注解;
echo “Hello World !” #Shell脚本主命令,执行该脚本呈现的内容。
1、Shell脚本编写完毕,如果运行该脚本,运行用户需要有执行权限,可以使用chmod o+x first_shell.sh赋予可执行权限。
2、然后./first_shell.sh执行即可,还可以直接使用命令执行: /bin/sh first_shell.sh直接运行脚本,不需要执行权限,最终脚本执行显示效果一样。
3、初学者学习Shell编程,可以将在Shell终端运行的各种命令依次写入到脚本内容中,可以把Shell脚本当成是Shell命令的堆积。
三、Shell编程之变量详解
Shell编程是非类型的解释型语言,不像C++、JAVA语言编程时需要事先声明变量,Shell给一个变量赋值,实际上就是定义了变量,在Linux支持的所有shell中,都可以用赋值符号(=)为变量赋值,Shell变量为弱类型,定义变量不需要声明类型,但在使用时需要明确变量的类型,可以使用Declare指定类型,Declare常见参数有:
+/- "-"可用来指定变量的属性,"+"为取消变量所设的属性;
-f 仅显示函数;
r 将变量设置为只读;
x 指定的变量会成为环境变量,可供shell以外的程序来使用;
i 指定类型为数值,字符串或运算式。
Shell编程中变量分为三种,分别是系统变量、环境变量和用户变量,其中系统变量在对参数判断和命令返回值判断时使用,而环境变量则主要是在程序运行时需要设置,用户变量又称为局部变量,多使用在Shell脚本内部或者临时局部使用。
#!/bin/bash
#By author jfedu.net 2017
A=123
echo “Printf variables is $A.”
执行该Shell脚本,结果将会显示:Printf variables is jfedu.net。Shell常见的系统变量、环境变量、用户变量详解如下:
1)SHELL编程常见系统变量
$0 当前脚本的名称;
$n 当前脚本的第n个参数,n=1,2,…9;
$* 当前脚本的所有参数(不包括程序本身);
$# 当前脚本的参数个数(不包括程序本身);
$? 命令或程序执行完后的状态,返回0表示执行成功;
$$ 程序本身的PID号。 2)SHELL编程常见环境变量
PATH 命令所示路径,以冒号为分割;
HOME 打印用户家目录;
SHELL 显示当前Shell类型;
USER 打印当前用户名;
ID 打印当前用户id信息;
PWD 显示当前所在路径;
TERM 打印当前终端类型;
HOSTNAME 显示当前主机名。 3)SHELL编程用户变量
A=jfedu.net 自定义变量A;
N_SOFT=nginx-1.12.0.tar.gz 自定义变量N_SOFT;
BACK_DIR=/data/backup/ 自定义变量BACK_DIR;
IP1=192.168.1.11 自定义变量IP1;
IP2=192.168.1.12 自定义变量IP2。 创建Echo打印菜单Shell脚本,脚本代码如下:
#!/bin/bash
#auto install httpd
#By author jfedu.net 2017
echo -e '\033[32m-----------------------------\033[0m'
FILE=httpd-2.2.31.tar.bz2
URL=http://mirrors.cnnic.cn/apache/httpd/
PREFIX=/usr/local/apache2/
echo -e "\033[36mPlease Select Install Menu:\033[0m"
echo
echo "1)官方下载Httpd文件包."
echo "2)解压apache源码包."
echo "3)编译安装Httpd服务器."
echo "4)启动HTTPD服务器."
echo -e '\033[32m-----------------------------\033[0m'
sleep 20
SHELL编程入门简介的更多相关文章
- Linux下的shell编程入门
通常情况下,我们从命令行输入命令每输入一次就能够得到系统的一次响应.一旦需要我们一个接着一个的输入命令而最后才得到结果的时候,这样的做法显然就没有效率.要达到这样的目的,通常我们利用shell程序或者 ...
- Linux Shell编程入门
从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...
- 转:Linux Shell编程入门
http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html 从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来 ...
- 转inux Shell编程入门
http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html 从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来 ...
- Shell编程入门基础上
前言 为什么学 Shell Shell 脚本语言是实现 Linux/UNIX 系统管理及自动化运维所必备的重要工具, Linux/UNIX 系统的底层及基础应用软件的核心大都涉及 Shell 脚本的内 ...
- [转]Linux Shell编程入门
转自:http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html 从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的 ...
- shell 编程 && bash 简介(shell 变量、shell操作环境、数据流重导向、管线命令、shell script)
如何学习一门编程语言 数据类型 运算符 关键字 1 认识BASH 这个shell linux是操作系统核心,用户通过shell与核心进行沟通,达到我们想要的目的.硬件.核心.用户之间的关系: 原理:所 ...
- Linux简介及常用命令使用5--linux shell编程入门
生成 测试数据的shell脚本 Vim data_create.sh rm -rf ./data.txttouch data.txtfor((i=0;i<2000;i++))dostr=',na ...
- shell编程入门
背景知识 Shell 是用户与内核进行交互操作的一种接口,是 Linux 最重要的软件之一.目前最流行的 Shell 称为 bash Shell,bash Shell 脚本编程以其简洁.高效而著称,多 ...
随机推荐
- 哈尔滨理工大学软件与微电子学院程序设计竞赛(同步赛) C.Coronavirus (BFS)
题意:有一个图,要求从\(S\)走到\(E\),\(.\)表示可以走的路径,\(*\)周围的八个方向均不能走,要求判断是否能走到\(E\),若能,输出最小路径长度,否则输出\(Impossible\) ...
- github host
更改hosts文件,地址:C:\Windows\System32\Drivers\etc 不能直接修改,将其拷贝到桌面,进行修改后,再复制到文件目录下(直接替换) 在hosts文件中添加: # git ...
- poj-3046 Ant Counting【dp】【母函数】
题目链接:戳这里 题意:有A只蚂蚁,来自T个家族,每个家族有ti只蚂蚁.任取n只蚂蚁(S <= n <= B),求能组成几种集合? 这道题可以用dp或母函数求. 多重集组合数也是由多重背包 ...
- Splunk监控软件操作
一. Splunk公司与产品 美国Splunk公司,成立于2004年,2012年纳斯达克上市,第一家大数据上市公司,荣获众多奖项和殊荣.总部位于美国旧金山,伦敦为国际总部,香港设有亚太支持中心,上海 ...
- sdutoj2887
#include <stdio.h> #include <math.h> int main(){ int px,tx;double alpha; int T;scanf(&qu ...
- Nginx环境下,PHP下载,中文文件,下载失效(英文可以下载)怎么解决呢?
参考出处: http://www.imooc.com/qadetail/76393 Nginx环境下,PHP下载,中文文件,下载失效(英文可以下载)怎么解决呢? 背景介绍: 文件名 为英文时可以下载 ...
- git merge bug
git merge bug 本地分支 dev commit 后, 直接 pull 远程 dev 分支, 导致远程 dev 分支 merge 到本地 dev 分支了, 取消本次 merge 操作? Re ...
- Awesome Gatsby blog websites
Awesome Gatsby blog websites very simple very clean i18n dark mode (css var) demos https://overreact ...
- export excel
export excel sheet.js https://sheetjs.com/ https://github.com/SheetJS/sheetjs excel.js https://www.n ...
- puppeteer & screenshot
puppeteer & screenshot http://localhost:9812/screenshot?url=https://cdn.xgqfrms.xyz/