Linux网课学习笔记12——Shell编程入门-Shell的编程过程

Shell的编程过程

在这里插入图片描述
Shell独立与内核,它是连接内核和应用程序的桥梁,并由输入设备读取命令,再将其转为计算机可以理解的机械码,Linux内核才能执行该命令。

Shell是一种应用程序,当用户登陆Linux系统时,Shell就会被调入内存去执行。

Shell提供了用户与内核进行交互操作的一种接口,接收用户输入的命令,并把他送入内核去执行。

在Linux中,Shell不但能与用户进行逐个命令交互执行,也可以通过脚本语言进行编程。

通过对Shell进行编程,可使大量任务自动化,对于系统管理、系统维护方面特别有用。

Shell脚本的基本结构

Shell脚本在不同的Linux系统都能运行

可使用多种编辑器,如vim等

Shell脚本通常是以 .sh 为后缀

第一行要以 #! /bin/bash 开头 ,代表该文件使用的是bash语法

# 表示注释,后面跟一些该脚本相关的的注释内容以及作者、创建日期、版本等。

演示操作:

使用vim编辑器

新建文件first.sh

vim first.sh

按 i 进入编辑模式

第一行是要求要有的,作用:定义执行该shell的程序在哪,不加就系统默认:

#/bin/bash

第二行是注释:

#this is a shell

data命令显示时间,echo命令显示字符串:

date
echo "hello,word!"

按Esc键切换到命令模式,输入 :wq 保存退出
在这里插入图片描述

在这里插入图片描述

操作演示:让Shell脚本运行

给Shell文件赋予可执行的权限:

chmod a+x first.sh

检查权限:

ll first.sh 

在这里插入图片描述
显示first.sh已有可执行权限(x)

下面执行:

方法一:

./first.sh

在这里插入图片描述
Shell脚本正常运行

方法二:通过Shell命令来执行Shell文件

sh first.sh

在这里插入图片描述
这种方式下不需要Shell脚本具有可执行权限

如果发现Shell文件的执行存在问题,可以对Shell脚本文件进行调试跟踪:

sh -x first.sh

在这里插入图片描述

其他知识点:

复习与Shell相关的命令

1.现在无论使用哪种Linux操作系统,默认的Shell总是/bin/bash

2.查看系统中SHELL变量的值:
echo $SHELL

3.查看系统内置了哪些Shell,有以下两种方法:

cat /etc/shells

chsh -list

1.创建Shell程序

与MS-DOS系统中的批处理文件类似,Linux中的脚本(Shell程序)是一个文本文件,包含各类Linux的Shell命令。通过脚本文件将这些命令汇集在一起,可连续执行shell命令。

举例:编写一个最简单的“Hello World!”程序。

步骤:

(1)创建一个用于保存文件的目录:
mkdir /usr/program

(2)在program目录下新建一个文本程序first。

(3)打开first文件,输入Shell的脚本。

1: #!/bin/bash

2: var=“Hello World!”

3: echo $var

说明:

第1行告诉系统,该文件后面的代码将用/bin/bash来执行。这是一般Shell程序第1行中必须包含的内容

第2行为变量var定义了一个字符串值。

第3行将变量var的值显示输出到终端。

2.设置执行权限

创建好first文件后,使用ls -l命令可以看到文件的所有者(这里是root )对该文件只有读和写的权限,没有执行权限。

执行chmod u+x /usr/program/first为脚本文件设置所有者的执行权限。当然,也可以执行chmod a+x /usr/program/first设置所有用户都可以运行该脚本程序。

注意:与DOS或Windows中的批处理程序不同,Linux中的脚本文件不是按扩展名来识别,而是通过为文件添加执行权限来允许其执行,用户可以为脚本文件设置任意扩展名。

3.执行Shell程序

两种方法:

(1)使用Shell程序执行

#bash /usr/program/first

使用这种方法时,不需要设置脚本程序的可执行权限。

(2)直接执行

#/usr/program/first

使用这种方法时,需首先设置该文件的执行权限。

如果执行当前目录下的脚本文件,通常也应该使用一个点表示当前目录,如执行当前目录下的脚本文件test,可使用命令:# ./test


版权声明:本文为weixin_45550460原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。