Linux Shell 变量
2021-01-15 本文已影响0人
尚水杨
命名规则
- 只能使用英文字母、数字和下划线,首字符不能以数字开头。
- 区分大小写。
变量定义
变量定义采用如下方法key=value ,"="号两边不能有空格
获取变量值
可以如下两种
var1="hello"
echo $var1
echo ${var1}
设置变量只读及删除变量
#设置只读
readonly var1
# 删除
unset var1
变量类型
-
环境变量
一般大写,全局共享,有系统自带的环境变量,也有通过export声明的临时全局变量
常用的环境变量
PATH 决定了shell将到哪些目录中寻找命令或程序
HOME 当前用户主目录
HISTSIZE 历史记录数
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL 当前用户Shell类型
LANGUGE 语言相关的环境变量,多语言可以修改此环境变量
MAIL 当前用户的邮件存放目录
PS1 基本提示符,对于root用户是#,对于普通用户是$ -
Shell内置变量
变量 | 含义 |
---|---|
$0 | 脚本名 |
9 | 位置1-9参数 |
${10} | 位置10参数 |
$# | 位置参数个数 |
"$*" | 所有位置参数(作为单个字符串) |
"$@" | 所有位置参数(每个作为单独字符串) |
${#*} | 传递到脚本中的命令行参数的个数 |
$? | 返回值 |
$$ | 脚本进程的PID |
$- | 传递到脚本中的标识 |
$_ | 之前命令的最后一个参数 |
$! | 运行在后台的最后一个作业的进程ID(PID) |
- 局部变量
用户定义的变量,只能在当前shell中生效
字符串
变量值
字符串可以使用单引号、又引号及不使用引号
var1='value1'
var2="value1 \${var1}=${var1}"
var3=value3
注:
1. 单引号是任何字符都是原样输出。
2. 单引号字符串中不可以出现单个单引号,可以成对出现。
3. 双引号字符串中可以使用变量。
4. 双引号字符串中可以使用转义字符。
拼接字符串
var1="value1"
#使用双引号拼接
var2="value2 "$var1" is ok"
#使用单引号拼接
var3='value3 '$var1' is ok'
查找子字符串
使用index指令进行查找,位置从1开始计算
#查找第一个i或s字符的位置
s1="this is shell"
`expr index "$s1" is`
#或者
$(expr index "$s1" is)
提取子字符串
s1="this is shell"
#从第6个字符开始,取2个字符,下标从0开始
${s1:5:2} #返回is
获取字符串长度
s1="this is shell"
echo ${#s1} #返回13
数组
数组定义
#方式1
arr_name=(1 2 3)
#方式2
arr_name=(
1
2
3
)
#方式3
arr_name[0]=1
arr_name[1]=2
arr_name[2]=3
读取数组
#格式
#获取单个元素
${arr_name[n]}
#获取所有元素
${arr_name[@]}
#获取数组元素的个数
${#arr_name[@]}
#或者
${#arr_name[*]}
数组说明
- 数组元素的下标由 0 开始编号
- 下标使用字符也可以
- 可以不使用连续的下标,范围没有限制