一、变量定义
1、什么时候需要定义变量?
如果某个内容需要多次使用,并且在代码中重复出现,那么可以用变量代表该内容。这样在修改内容的时候,仅仅需要修改变量的值。
2、定义一个变量
使用等号(=)将变量名称和值进行赋值。
3、变量名称的规则
变量名称只能包含字母、数字和下划线,且不能以数字开头。
变量名称是区分大小写的。
推荐使用大写字母表示系统预定义的变量,如PATH、HOME等。
二、变量的分类
本地变量:当前用户自定义的变量。当前进程中有效,其他进程及当前进程的子进程无效。
环境变量:环境变量是系统级别的变量,可在所有脚本和程序中使用。常见的环境变量有PATH、HOME等。当前进程有效,并且能够被子进程调用。
全局变量:全局所有的用户和程序都能调用,且继承,新建的用户也默认能调用.
内置变量:shell本身已经固定好了它的名字和作用.
变量类型 | 作用域 | 生命周期 |
---|---|---|
本地变量 | 当前shell环境(子shell不能用) | 脚本结束或终端结束 |
环境变量 | 当前shell或者子shell | 当前进程结束 |
全局变量 | 所有用户及shell环境 | 关机 |
内置变量 | 所有用户及shell环境 | 关机 |
三、变量的使用
直接引用:变量名
间接引用:$var
命令替换:$(command) 或 command
特殊变量:$0,$1,$2...,$@,$#,$?
环境变量:$HOME,$PATH...
命令行参数:$1,$2...
四、特殊变量
$0
:当前脚本的名称。$1~$9
:脚本或函数的参数。$#
:传递给脚本或函数的参数个数。$*
:所有参数作为一个单词显示。$@
:每个参数都作为一个单词显示。$?
:上一个命令的退出状态。
五、shell常用字符
!: 执行历史命令 !! 执行上一条命令
$: 变量中取内容符
+ - * / %: 对应数学运算 加 减 乘 除 取余数
&: 后台执行
;: 分号可以在shell中一行执行多个命令,命令之间用分号分割
\: 转义字符
``: 反引号 命令中执行命令 echo "today is `date +%F`"
' ': 单引号,脚本中字符串要用单引号引起来,但是不同于双引号的是,单引号不解释变量
" ": 双引号,脚本中出现的字符串可以用双引号引起来
通配符
~: 家目录 # cd ~ 代表进入用户家目录
*: 星号是shell中的通配符 匹配所有
?: 问号是shell中的通配符 匹配除回车以外的一个字符
[list]: 匹配[list]中的任意单个字符
[!list]: 匹配除list中的任意单个字符
{string1,string2,...}: 匹配string1,string2或更多字符串
重定向
> 覆盖输入
>> 追加输入
< 输出
<< 追加输出
管道命令
|: 管道符 上一个命令的输出作为下一个命令的输入 cat filename | grep "abc"