个性化阅读
专注于IT技术分析

Linux shell编程之:什么是shell?shell脚本介绍及其操作

上一章Unix和Linux教程请查看:Unix和Linux信号捕获处理介绍和操作

本章我们介绍linux shell的基本概念、shell脚本介绍及其相关操作。

shell脚本是一种计算机程序,设计为由Unix/Linux shell运行,可以是下列之一:

  • Bourne Shell
  • C Shell
  • Korn Shell
  • GNU Bourne-Again Shell

shell是命令行解释器,由shell脚本执行的典型操作包括文件操作、程序执行和打印文本。

1、什么是shell?

Shell为你提供了Unix系统的接口,它从你那里收集输入,并根据输入执行程序。

当程序完成执行时它显示程序的输出,shell是一个我们可以运行命令、程序和Shell脚本的环境。

shell有不同的风格,就像操作系统有不同的风格一样,每种shell都有自己的一组可识别的命令和函数。

2、shell命令提示符

命令提示符$由shell执行,当提示显示时,你可以输入一个命令。

Shell将在你按下Enter后读取你的输入,它通过查看输入的第一个单词来确定要执行的命令。一个单词是一组完整的字符,空格和制表符分隔单词。

下面是date命令的一个简单示例,它显示当前的日期和时间:

~/shell$ date
2020年 10月 25日 星期一 12:15:05 CST

你可以使用环境教程中介绍的环境变量PS1自定义命令提示符。

3、shell类型

在Unix中有两种主要的shell类型

  • Bourne shell——如果你使用的是Bourne类型的shell, $字符是默认的提示符。
  • C shell——如果使用C类型的shell, %字符是默认的提示符。

Bourne shell有以下几个范畴:

  • Bourne shell (sh)
  • Korn shell (ksh)
  • Bourne Again shell (bash)
  • POSIX shell (sh)

下面是不同的c型shell:

(1)C shell (csh)

(2)TENEX/TOPS C shell (tcsh)

最初的Unix shell是在20世纪70年代中期由Stephen R. Bourne编写的,当时他还在新泽西州的AT&T贝尔实验室。

Bourne shell是第一个出现在Unix系统上的shell,因此它被称为“shell”。在大多数Unix版本中,Bourne shell通常安装为/bin/sh,由于这个原因它是编写可以在不同版本的Unix上使用的脚本的首选shell,这一章我们将讨论大部分的shell的概念都是基于Bourne shell。

4、Shell脚本

shell脚本的基本概念是命令列表,这些命令按执行顺序列出。一个好的shell脚本应该有注释(前面是#符号)、描述步骤、有条件测试,例如值A大于值B,另外还有循环允许我们遍历大量数据、文件读取和存储数据、变量读取和存储数据、脚本可能包含函数。

我们将在下一节中编写许多脚本,它是一个简单的文本文件,我们在其中放置所有命令和其他几个必需的构造,这些构造告诉shell环境做什么以及何时做。Shell脚本和函数都是解释性的,这意味着它们没有被编译。

5、shell示例脚本

假设我们创建了一个test.sh脚本,注意所有脚本都有.sh扩展名。在你向脚本添加任何其他内容之前,你需要提醒系统一个shell脚本正在启动,这是使用shebang构造完成的,例如−# ! / bin / sh这告诉系统接下来的命令将由Bourne shell执行。

它被称为shebang,因为#符号被称为hash散列,而!这个符号叫做“bang”。要创建包含这些命令的脚本,请先放置shebang行,然后添加命令:

#!/bin/bash
pwd
ls -a

6、shell注释

你可以把你的注释写在你的脚本中如下:

#!/bin/bash

# Author : Once
# Copyright (c) srcmini02.com
# Script for test:
pwd
ls -a

保存上述内容并使脚本可执行:

$chmod +x test.sh

shell脚本现在可以执行了:

$./test.sh || sh test.sh

7、扩展Shell脚本

Shell脚本有几个必需的构造,它们告诉Shell环境做什么以及什么时候做,当然大多数脚本比上面的脚本更复杂。

毕竟shell是一种真正的编程语言,包含了变量、控制结构等等。无论脚本变得多么复杂,它仍然只是一个按顺序执行的命令列表。

下面的脚本使用read命令,该命令从键盘获取输入,并将其赋给变量name的值,最后在STDOUT上打印它。

echo "输入你的名字:"
  read name
  echo "Hola, $name"

下面是两种运行方式,前一种需要保证当前用户对sample.sh有执行权限:

~/shell$ vim sample.sh 
~/shell$ ls -la sample.sh 
-rwxrwxr-x 1 user user 58 11月 25 12:05 sample.sh
~/shell$ ./sample.sh 
输入你的名字:
java
Hola, java
~/shell$ sh sample.sh 
输入你的名字:
python
Hola, python
~/shell$ 
赞(0)
未经允许不得转载:srcmini » Linux shell编程之:什么是shell?shell脚本介绍及其操作

评论 抢沙发

评论前必须登录!