Shell教程一----什么是Shell

Posted Z小旋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell教程一----什么是Shell相关的知识,希望对你有一定的参考价值。

1.1 什么是脚本语言

脚本语言是像剧本一样教计算机办某个事情的语言,通过脚本指令,让计算机自动化完成一系列工作的程序,脚本程序通常可以用文本编辑器修改,不需要编译,通常是解释运行的。

比如你想让计算机执行复制某个文件的操作,如:cp ~/Desktop/*.txt ~/text

你可以在文本编辑器写入上边的代码并且保存此文件,然后你通过执行这个文本文件来执行上面的代码,并不需要重复手动输入上边的代码。

脚本解释器: 脚本解释器是把脚本代码翻译成计算机看的懂得二进制语言 ,就好像你写了一段中文,要给别人解释,需要参照新华字典,写一段英文,需要参照牛津字典解释,脚本解释器就是这个功能。

1.2 什么是Sell

Shell 是一个命令行解释器,它接收应用程序/用户指令。然后调用操作系统内核

Shell 是 linux 命令解释器。当我们向 linux 的命令行输入一个命令时,比如:pwd、ls 等,shell 负责将该命令翻译成机器可以识别的二进制语言,并把机器的反馈输出出来,供我们识别阅读

shell 脚本(shell script),是一种为 shell 编写的脚本程序。我们所说的 shell 通常都是指 shell 脚本编程

我们正常的设备。首先内部是硬件,然后外部是操作系统或者内核,在此基础上有了外层应用程序。

而应用程序想要操作内核,需要通过编写Shell程序(命令行解释器),然后来操作内核程序。也就是Shell给用户提供了访问操作系统内核的服务

Shell 是一种解释型的高级语言。它像其它高级语言一样,定义了变量和参数、提供了分支、循环等控制语句,能够完成一个系列动作,简化我们对系统的管理与应用的部署。

1.3 扩展名

Shell 程序不要求有扩展名,任何扩展名都可以作为Shell脚本,你可以用 .txt 来编写shell脚本,也可以用.c来写,但是为了方便我们分辨,我们一般用.sh 来做扩展名

1.4 注释

Shell用#做为单行注释。与 c 语言的//相当。(#!除外。)

多行注释:

:<<!
# 注释内容块
!

举例:

#!/bin/bash

echo "hello"
:<<!
echo "1"
echo "2"
!
echo "3"

1.5 Shell脚本环境

运行Shell需要两个东西:一个能编写代码的文本编辑器和一个能解释执行的脚本解释器

在编写好shell脚本之后,需要脚本解释器把shelll脚本转换成机器可以识别的二进制语言

Linux的Shell解释器有很多种:

  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)

我们应该在程序的第一行,指明用哪个脚本解释器。如不指明的话,使用默认的 shell:/bin/bash。 Bash 也是大多数Linux 系统默认的 Shell。

Shell脚本以 #! 开头(#!指定bath解析器) ,

#!/bin/bash 表示用bath解析器来解析Shell脚本

1.6 执行Shell脚本

执行Shell脚本,可以采用以下几种方式

1.sh、bash命令

sh FileName.sh
或
bash FileName.sh

2 绝对路径或者相对路径运行

首先要 chmod +x file.shchmod 777 file.sh加上执行权限,否则会提示无执行权限。

#相对路径
./FileName.sh
#绝对路径
/home/zzx/FileName.sh

注意执行脚本时候或者绝对路径,或者 ./file.sh ,如果不加的话,linux 默认会从PATH 里去找该 file.sh。
就是不能 FileName.sh 直接运行Shell脚本。

# 错误
FileName.sh

1.7 编写一个Shell脚本

要求:

在/home/zzx目录下创建一个hello.txt文件,在hello.txt文件中添加,"Hello,World"

1.4.1 创建 batch.sh 脚本文件

zzx@zzx-t:~$ touch batch.sh
zzx@zzx-t:~$ vim batch.sh

1.4.2 编写Shell脚本

#!/bin/shell

cd /home/zzx
touch hello.txt
# >>重定向 把echo输出的内容重定向到hello.txt
echo "Hello,World" >> hello.txt

1.4.3 运行Shell脚本

bash batch.sh


1.4.4 打开文件,输出Hello,World

2. Shell变量

Shell中有三种变量 用户变量,系统变量和特殊变量

2.1 Shell常用系统变量

使用 env 可以显示全部的系统变量

  • &HOME

获取用户当前的家目录

  • &PWD

获取当前的工作路径/绝对路径

  • &SHELL

获取Shell脚本的解析器

  • &USER

获取当前用户名

2.2 自定义变量(用户变量)

Shell 中的变量,不用声明,直接定义使用就可以。

Shell 中变量都是字符串型,如果需要用整形,要特殊声明。

基本语法:

  • 定义变量: 变量名=值
  • 撤销变量 unset 变量名
  • 声明静态变量 readonly 变量名 PS:静态变量不能unset撤销
  • 声明环境变量 export 变量名

命名规则:

  1. 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
  2. 等号两侧不能有空格 这个是区别于其他语言的一点
  3. 不能使用标点符号。
  4. 不能使用bash里的关键字(可用help命令查看保留关键字)。

用$符号,就可以得到变量的值
echo 输出函数 等于C语言的printf

2.3 特殊变量

  • $#:传给 shell 脚本参数的数量。

  • $*:传给 shell 脚本参数的内容。

  • $1、$2、$3、$4、$5:运行脚本时,传给程序的参数,用空格分开。

  • $?:命令执行的返回的状态。0 表示正确,非 0 表示出错。

  • $0:当前执行的进程名。

  • $$:当前进程的进程号。

变量详细内容在第二节

以上是关于Shell教程一----什么是Shell的主要内容,如果未能解决你的问题,请参考以下文章

本人网上收集整理的shell教程,非常详细

代码片段:Shell脚本实现重复执行和多进程

shell if 语句

shell教程

shell脚本

Shell 教程