变量的命名
变量名由字母、数字、下划线组成,不能用数字开头。
变量的定义、赋值
shell是一种动态类型语言和弱类型语言,在shell中,变量的数据类型无需显示地声明,变量的数据类型会根据不同的操作有所变化。
name="Jack"
注意,
=
两边不能有空格
变量的调用
第一种
echo ${name}
第二种
echo $name
变量的作用域
全局变量
在脚本中定义的变量都是全局变量。
局部变量
默认情况下,函数内部定义的变量也属于全局变量。但是只要在变量名前加local
关键字,该变量就会变成局部变量。
实例
当函数内部的变量name没有加local
,name就属于全局变量,最后打印name就可以得到里面的变量
#! /bin/zsh
name='外面的变量'
func()
{
name='里面的变量'
}
# 调用函数
func
# 输出变量值
echo "${name}"
==》里面的变量
当name变量加了local
,该变量就属于局部变量,最后打印变量也就只能调用到外面的变量。
#! /bin/zsh
name='外面的变量'
func()
{
local name='里面的变量'
}
# 调用函数
func
# 输出变量值
echo "${name}"
==》外面的变量
清除变量
unset name
系统变量
变量 | 说明 |
---|---|
$0 | 当前shell脚本到名称 |
$n | n是一个整数,从1开始,表示参数的位置,例如$1表示传入脚本的第一个参数 |
$# | 命令行参数的个数 |
$? | 前一个命令或者函数的返回状态码,0代表成功 |
$* | 以"arg1,arg2"的形式返回所有参数,所有参数放在一个字符串里 |
$@ | 以"arg1", "arg2"的形式返回所有参数,每个参数都是一个独立的字符串 |
$$ | 返回本程序的进程ID |
环境变量
# 查看环境变量
echo $PATH
变量 | 说明 |
---|---|
PATH | 命令搜索路径,以冒号为分隔符 |
HOME | 用户主目录的路径名 |
COLUMNS | 定义了命令编辑模式下可以使用命令行的长度 |
HISTFILE | 命令历史文件 |
HISTSIZE | 命令历史文件中最多可包含的命令条数 |
HISTFILESIZE | 命令历史文件中包含的最大行数 |
IFS | 定义shell使用的分隔符 |
LOGNAME | 当前的登入名 |
SHELL | shell的全称路径 |
TERM | 终端类型 |
TMOUT | shell自动退出的时间,单位为妙,如果为0,则表示禁止自动退出 |
PWD | 当前的工作目录 |