上一章Unix和Linux教程请查看:Unix和Linux信号捕获处理介绍和操作
本章我们介绍linux
shell的基本概念、shell脚本介绍及其相关操作。
shell脚本是一种计算机程序,设计为由Unix/Linux shell运行,可以是下列之一:
- Bourne Shell
- C Shell
- Korn Shell
- GNU Bourne-Again 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 (sh)
- Korn shell (ksh)
- Bourne Again shell (bash)
- POSIX shell (sh)
(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) srcmini.com
# Script for test:
pwd
ls -a
保存上述内容并使脚本可执行:
$chmod +x test.sh
【Linux shell编程之(什么是shell(shell脚本介绍及其操作))】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$
推荐阅读
- Linux shell编程(基本shell变量的定义和使用介绍)
- Unix和Linux信号捕获处理介绍及其相关操作教程
- Unix和Linux系统日志介绍和详细操作教程
- 贝塞斯达戏弄“最大的发动机大修”,托德·霍华德(Todd Howard)变得非常糊涂
- 凯纳(Kena)幕后花絮(精神之桥的和谐合作)
- 赠品(复仇者联盟:无限战争蓝光[关闭])
- 刺客信条瓦尔哈拉的发售后计划包括免费(收费)其他内容
- 杀手2(对于专业刽子手来说,这是一项值得投资的项目)
- 推荐评测 – 动物穿越(新视野)