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.sh
或 chmod 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 变量名
命名规则:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 等号两侧不能有空格 这个是区别于其他语言的一点
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
用$符号,就可以得到变量的值
echo 输出函数 等于C语言的printf
2.3 特殊变量
-
$#:传给 shell 脚本参数的数量。
-
$*:传给 shell 脚本参数的内容。
-
$1、$2、$3、$4、$5:运行脚本时,传给程序的参数,用空格分开。
-
$?:命令执行的返回的状态。0 表示正确,非 0 表示出错。
-
$0:当前执行的进程名。
-
$$:当前进程的进程号。
变量详细内容在第二节
以上是关于Shell教程一----什么是Shell的主要内容,如果未能解决你的问题,请参考以下文章