陈斌彬的技术博客

Stay foolish,stay hungry

Linux - Shell 脚本入门

理解Linux Shell

Shell:Shell 是基于命令行的解释器,它连接用户和操作系统,允许通过编写脚本来执行系统的命令。

进程:用户在系统中运行的任何一个任务都以进程的形式存在。进程比任务要稍微复杂一些。

文件:存储于硬盘之上,包含用户拥有的数据。

X-窗口:Linux 运行的一种模式。它可以将显示器分为若干个不同的窗口,允许用户并行做几件事情,并可以通过图形界面的方式从一个任务切换到另一个任务。

字符终端:只能显示字符或者非常简单的图形界面。

会话:登陆系统和登出系统之间的时间。

标准 Linux 发行版常见的 Shell 类型

Bourne shell:这是 Linux 下最常见的 shell 之一。它是由贝尔实验室的 Stephen Bourne 编写的。每一个类 Unix 的系统都至少包含一个与其兼容的 shell。Bourne shell 的名字叫做 sh,通常它被放置在 /bin/sh

C shell:它是 Bill Joy 为伯克利软件发行创建的。它的语法基于 C 编程语言。它主要被用于交互式终端,很少用于编写脚本语言和系统控制。C shell 有很多交互式的命令。

Shell 编程基础

  1. 打开一个终端;
  2. 查看当前使用的是哪种 shell:echo $SHELL;
  3. 在 Linux 下,美元符号 ($) 后面跟着的是 shell 变量;
  4. echo 命令返回你紧随其后输入的内容;
  5. 管道符号 (|) 用来连接不同的命令;
  6. #!/bin/sh ——被称为 shebang 。它出现在每个 shell 脚本的第一行,用来指明这个脚本被 /bin/sh 执行。

关于 Shell 脚本

Shell 脚本是以 .sh 为后缀的文本文件,它可以被赋予可执行的权限。

编写和执行脚本的过程

  1. 打开终端;
  2. 通过 cd 命令切换到你想保存 shell 脚本的目录;
  3. 使用 touch 命令创建一个文件,如 touch hello.sh;
  4. 使用 vi hello.sh 或者 nano hello.sh 编辑文件;
  5. 赋予 hello.sh 可执行的权限:chmod 744 hello.sh
  6. 运行脚本:sh hello.sh 或者 ./hello.sh

编写第一个脚本

#!/bin/bash
# My first script

echo "Hello World!"

将上面的内容保存到一个文件,赋予其可执行的权限并运行它,输出结果如下所示:

Hello World!

在上面的代码中:

#!/bin/bash (is the shebang.)
# My first script (is comment, anything following '#' is a comment)
echo “Hello World!” (is the main part of this script)

编写第二个脚本

这个脚本会打印出你的名字和当前正在运行的进程。

#! /bin/bash
echo "Hello $USER"
echo "Hey i am" $USER "and will be telling you about the current processes"
echo "Running processes List"
ps

脚本运行的结果:

img

编写第三个脚本

这个脚本演示如何与 shell 脚本进行交互

#! /bin/bash
echo "Hey what's Your First Name?";
read a;
echo "welcome Mr./Mrs. $a, would you like to tell us, Your Last Name";
read b;
echo "Thanks Mr./Mrs. $a $b for telling us your name";
echo "*******************"
echo "Mr./Mrs. $b, it's time to say you good bye"

脚本运行的结果:

apple@ubuntu:~/Desktop$ . name.sh
Hey what's Your First Name?
chen
welcome Mr./Mrs. chen, would you like to tell us, Your Last Name
binbin
Thanks Mr./Mrs. chen binbin for telling us your name
*******************
Mr./Mrs. binbin, it's time to say you good bye