shell基础知识
shell简介
Shell是一个C语言编写的脚本语言,它是用户与Linux的桥梁,用户输入命令交给Shell处理,Shell将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户。
Linux的基本思想:
- 一切都是文件
- 每个软件都有确定的用途
Shell基本分类
- 图形界面Shell(GUI Shell)
- 命令行界面Shell(CLI Shell),许多Linux的默认Shell是bash
第一个Shell脚本
执行shell脚本的三种方法
- 直接使用bash解释器执行
- 添加可执行权限
source
命令执行,以当前默认Shell解释器执行
Shell变量
系统变量
一些写Shell脚本时常用的系统变量
|SHELL
|默认Shell|
|:———-:||:———-:|
|$HOME
|用户家目录|
|$IFS
|内部字段分割符|
|$LANG
|默认语言|
|$PATH
|默认可执行程序路径|
|$PWD
|当前目录|
|$UID|当前用户|
|$USER|当前用户|
|$HOSTNAME|主机名|
|$RANDOM|随机生成一个0到32767的整数|
普通变量与临时环境变量
- 普通变量定义:
VAR=value
- 临时环境变量定义:
export VAR=value
- 变量引用:
$VAR
**区别:**shell环境变量的作用域是Shell进程,当export
导入到系统变量时,则作用域是Shell进程以及Shell子进程。
注意退出终端时,所有用户定义的变量都会清除。
位置变量
位置变量指函数或脚本后跟的第n个参数.shift
可对位置变量进行控制,每执行一次shift
,位置变量个数就会减一,而变量值则提前一位,shift n
则设置向前移动n位。
特殊变量
|$0|脚本自身的名字|
|:———-:||:———-:|
|$?|返回上一条命令是否执行成功,0为执行成功,非0为执行失败|
|$#|位置参数总数|
|$*|所有位置参数都被看做一个字符串|
|[email protected]|每个位置参数都被看做独立的字符串|
|$$|当前进程PID|
|$!|上一条运行后台程序的PID|
变量引用
|赋值运算符|示例|
|:———-:||:———-:|
|=|变量赋值|
|+=|两个变量相加|
反撇号等效于$(),都是用于执行shell命令
双引号和单引号
在变量赋值时,如果值有空格,Shell会把空格后面的字符串解释为命令!
- 不加引号,空格后面的字符串解释为命令
- 双引号,解释特殊符号的原有意义,如
VAR="1 2 $N"
- 单引号,忽略特殊字符
注释
在每行前面加个#号,即表示Shell忽略解释。