Linux下shell脚本符号和语法详解

来源:互联网 发布:服务贸易数据包括哪些 编辑:程序博客网 时间:2024/05/16 14:19

身为一个程序员,你必须得知道这些:
1、从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。2、shell是一种解释性语言,不同于C/C++之类的编译型语言
用户事先写一 个Shell脚本 (Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲 命令。
Shell脚 本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译
Shell 程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一 行敲到 Shell提示符下执行。
3、shell脚本不一定要以 .sh结尾但是最好以.sh结尾
4、shell脚本 第一行“#!”(这玩意叫shebang)开头,后面跟上解释器 ;例:#!/bin/bash 解释器有很多,都在在/etc/shells下
5、运行shell脚本要加上可执行权限
chmod +x script.sh ./script.sh
shell语言 或者说 命令行命令 如何执行?
首先检查用户输入的命令是否是内置命令的名字,执行内建命令相当于调用Shell进程中的一个函数,并不创建新的进程。
内置命令属于shell的一部分(内置在系统中)。如果是内置命 令名称,那么shell将其作为调用进程的一部分执行,也就是说shell并不会创建新的进程执行内置命令。shell并不需要在文件结构中搜索内置命令程序,这是因为shell可以立即访问它们.
常见的内置命令: cd export alias、 umask、exit
如果用户输入的命令不是内置命令,shell将使用PATH变量作为指南,搜索目录结构,以查找用户想要的程序。如果shell找到这个程序,那么它将创建一个新的进程以执行这个程序。如果没找到就会报错.
Shell会fork一个子进程并调用exec执⾏行./script.sh这个程序,exec系统调用应该把子进程的代码 段替换成./script.sh程序的代码段,并从它的_start开始执行。然而script.sh是个文本文件,根 本 没有代码段和_start函数,怎么办呢?
其实exec还有另外一种机制,如果要执行的是一个文本文 件,并且第一行用Shebang 指定了解释器,
则用解释器程序的代码段替换当前进程,并且从解释 器 的_start开始执行,而这个文本文件被当作命令行参数传给解释器。
因此,执行上述脚本相 于执行程序.

0 0