什么是Shell、Shell脚本
Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。Shell有两种执行命令的方式:
•交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。
上面提到过,Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本。Linux上常见的Shell脚本解释器有bash、sh、ash、csh、ksh,习惯上把它们称作一种Shell。我们常说有多少种Shell,其实说的是Shell脚本解释器。
•可以使用类似DOS下面的doskey的功能,用方向键查阅和快速输入并修改命令。
•自动通过查找匹配的方式给出以某字符串开头的命令。
•包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。
csh
Shell与编译型语言的差异
•可移植性:使用POSIX所定义的功能,可以做到脚本无须修改就可在不同的系统上执行。
•开发容易:可以在短时间内完成一个功能强大又妤用的脚本。
但是,考虑到Shell脚本的命令限制和效率问题,下列情况一般不使用Shell:
2.需要处理大任务的数学操作,尤其是浮点运算,精确运算,或者复杂的算术运算(这种情况一般使用C++或FORTRAN 来处理)。
3.有跨平台(操作系统)移植需求(一般使用C 或Java)。
4.复杂的应用,在必须使用结构化编程的时候(需要变量的类型检查,函数原型,等等)。
5.对于影响系统全局性的关键任务应用。
6.对于安全有很高要求的任务,比如你需要一个健壮的系统来防止入侵、破解、恶意破坏等等。
7.项目由连串的依赖的各个部分组成。
8.需要大规模的文件操作。
9.需要多维数组的支持。
10.需要数据结构的支持,比如链表或数等数据结构。
11.需要产生或操作图形化界面 GUI。
12.需要直接操作系统硬件。
13.需要 I/O 或socket 接口。
14.需要使用库或者遗留下来的老代码的接口。
15.私人的、闭源的应用(shell 脚本把代码就放在文本文件中,全世界都能看到)。如果你的应用符合上边的任意一条,那么就考虑一下更强大的语言吧——或许是Perl、Tcl、Python、Ruby——或者是更高层次的编译语言比如C/C++,或者是Java。即使如此,你会发现,使用shell来原型开发你的应用,在开发步骤中也是非常有用的。
#!/bin/bash echo "Hello World !"
“#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。echo命令用于向窗口输出文本。运行Shell脚本有两种方法。
作为可执行程序
将上面的代码保存为test.sh,并cd到相应目录:
chmod +x ./test.sh #使脚本具有执行权限 ./test.sh #执行脚本
/bin/sh test.sh /bin/php test.php
这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。
转载于:https://www.cnblogs.com/jing99/p/7309793.html
什么是Shell、Shell脚本相关推荐
- lnmp shell安装脚本
LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构.LNMP是现在大多数大型公司在用的web环境,nginx小巧高效的web服务器和反向代理服务器,相对于apach占 ...
- Linux shell 自启动脚本写法
# ********************************************************************** # Linux shell 自启动脚本写法 # 说明: ...
- linux Shell(脚本)编程入门实例讲解详解
linux Shell(脚本)编程入门实例讲解详解 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集, ...
- 一篇关于Maven项目的jar包Shell启动脚本
使用Maven作为项目jar包依赖的管理,常常会遇到命令行启动,笔者也是哥菜鸟,在做微服务,以及服务器端开发的过程中,常常会遇到项目的启动需要使用main方法,笔者潜心的研究了很多博客,发现大多写的都 ...
- shell 获取 mysql 行数_一个Shell小脚本精准统计Mysql每张表的行数实现
前言 对于开发或者运维人员来说,Mysql数据库每张表的数量肯定是要了解下,有助于我们清理无用数据或者了解哪张表比较占用空间. 另外多次统计表的行数,还能发现Mysql表的增量情况,能够预测表未来会有 ...
- linux 运维高级脚本生成器,Linux运维系列,Shell高级脚本自动化编程实战
课程文件目录: Linux自动化运维系列 Shell高级脚本自动化编程实战 [6.1G] ┣━━01.Shell基础概述 [315.1M] ┃ ┣━━1-1 Shell脚本体系概述.mp4 [154. ...
- ps -ef |grep -v 在shell sh 脚本中貌似无效?
ps -ef |grep -v 在shell sh 脚本中貌似无效? 想通过ps -ef |grep erdp_ |awk '{print $2}' 获取 erdp_ 开头的进程id, 执行在终端环境 ...
- Mac 系统部署Frp内网穿透服务 实现frpc shell启动脚本启动、停止
Mac 系统部署Frp内网穿透服务 实现frpc shell启动脚本启动.停止 前言 最近疫情导致居家办公,而工作中需要用到公网地址便于调试,于是就在本机(Mac系统)配置了Frpc内网穿透. 本来想 ...
- linux运维脚本编写,最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本...
最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本 大家可以通过参考下面的课程学习目录,就会发现单单只从目录上来分析就知道这是一部非常系统的Shell自动化脚本运 ...
- 在linux中常用的shell备份脚本(波大帅哥)
备份脚本: 备份网站内容 #!/bin/bash #指定运行的脚本shell #运行脚本要给用户执行权限 bakdir=/backup month=`date +%m` day=`date +%d` ...
最新文章
- python批量提取word指定内容_使用python批量读取word文档并整理关键信息到excel表格的实例...
- 20145234黄斐《Java程序设计》第十周
- java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
- 在html中引入jQuery包的方法
- 思考并实现以下程序功能:实现一个抢红包的程序 java
- 写了一个Windows服务,通过C#模拟网站用户登录并爬取BUG列表查询有没有新的BUG,并提醒我...
- 会计记忆总结之五:会计账薄
- 确保字符串的每个单词首字母都大写,其余部分小写
- sketchup 图片转模型_你应该知道的那些 Sketchup 实用快捷键和使用技巧!
- Rinne Loves Xor
- js 验证用户输入的是否为数字、检查只能为数字
- [转]动态规划DP的分类
- Java+Selenium 3.x 实现Web自动化 - 1.自动化准备
- python学习笔记__Python的安装
- OpenCV——Sobel和拉普拉斯变换
- 可浮动的在线qq咨询客服代码
- 【优化选址】基于matlab粒子群算法求解充电站规划优化问题【含Matlab源码 664期】
- 【逗老师带你学IT】Amazing啊,Zoom落地企业内网IPPBX解决方案,ZOOM可以打国内电话了
- git add提示LF will be replaced by CRLF
- TCP/IP路由技术第一卷动态路由知识回顾