一、SHELL简介
Linux Shell种类非常多,常见的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语言的语法有所不同,最常用的shell是Bash,也就是Bourne Again Shell。我们为什么需要shell呢?用户需要操作硬件,硬件是通过内核驱动的,但用户是不能操作内核的,这时shell就起到一个用户和内核之间沟通的桥梁作用。用户可以输入shell命令执行,又可以利用 Shell脚本编程去运行。
Bash架构
二、命令类型
在Linux系统中,命令可以分为两类:内建命令(Built-in Commands)和外部命令(External Commands)。内建命令是由shell本身提供的,而外部命令则是独立的程序,通常存储在文件系统的某个目录下,比如/bin、/usr/bin等。内建命令的执行速度通常比外部命令快,因为它们不需要加载独立的程序。
type: 查询是否为内建命令
示例: type [指令]
三、变量定义
在 Linux Shell 中,变量的本质是字符串。定义变量时,等号两边不能有空格;引用变量时,需要在变量名前加上 变量名称"累加内容,或变量名 或 echo 1、$2…$n 形式表示,其中 $0 为脚本名,$# 为参数个数。特殊变量:由 Shell 内置,不可手动赋值,例如 $$(当前进程 PID)、$?(上一条命令的退出状态)、$* 和 $@(所有参数)。
1、环境变量
常用的环境变量有PATH、HOME、USER、PS1等
PS1: 提示字符的设定
HOME: 用户的家目录
PATH: 命令的查找路径,从前往后查找,如果没有找到,输出“command not found”
USER: 当前用户
2、特殊变量
- $: 本shell的PID
- ?: 上一个命令执行的回传值
- export: 环境变量,示例:
export 变量名称
如上图
echo $? #上一条命令的执行结果成功显示0,非0则表示失败;
echo $0: 表示脚本名称shell.sh;
$1:表示脚本执行的第一个参数;
$2:表示脚本执行的第二个参数;
。。。。。。
$#: 表示为参数个数;
$@: 表示所有参数,每个参数是独立的;
$*: 表示所有参数,所有参数作为一个整体。
六、变量的输入、数组和声明
read [-pt] variable
示例: read -p "please enter yes/no:" -t 30 test
-p: 给出提示信息
-t: 设置超时时间
declare: declare [-aixr] variable
示例: declare -i sum=100+50+50
echo ${sum}
数组: Var[index]=content
示例:
var[0]="aa"
var[1]="bb"
var[2]="cc"
echo "{var[1]},: 变量读取