Linux Shell 变量

命名规则

  1. 只能使用英文字母、数字和下划线,首字符不能以数字开头。
  2. 区分大小写。

变量定义

变量定义采用如下方法key=value ,"="号两边不能有空格

获取变量值

可以如下两种

var1="hello"
echo $var1
echo ${var1}

设置变量只读及删除变量

#设置只读
readonly var1
# 删除
unset var1

变量类型

  1. 环境变量
    一般大写,全局共享,有系统自带的环境变量,也有通过export声明的临时全局变量
    常用的环境变量
    PATH 决定了shell将到哪些目录中寻找命令或程序
    HOME 当前用户主目录
    HISTSIZE 历史记录数
    LOGNAME 当前用户的登录名
    HOSTNAME 指主机的名称
    SHELL 当前用户Shell类型
    LANGUGE  语言相关的环境变量,多语言可以修改此环境变量
    MAIL 当前用户的邮件存放目录
    PS1 基本提示符,对于root用户是#,对于普通用户是$

  2. Shell内置变量

变量 含义
$0 脚本名
1 -9 位置1-9参数
${10} 位置10参数
$# 位置参数个数
"$*" 所有位置参数(作为单个字符串)
"$@" 所有位置参数(每个作为单独字符串)
${#*} 传递到脚本中的命令行参数的个数
$? 返回值
$$ 脚本进程的PID
$- 传递到脚本中的标识
$_ 之前命令的最后一个参数
$! 运行在后台的最后一个作业的进程ID(PID)
  1. 局部变量
    用户定义的变量,只能在当前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[*]}

数组说明

  1. 数组元素的下标由 0 开始编号
  2. 下标使用字符也可以
  3. 可以不使用连续的下标,范围没有限制
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 变量的设置,读取 1.1变量的读取 echo读取变量 变量前加$ 可以把变量用大括号({})包裹 1.2 变...
    悠扬前奏阅读 360评论 0 0
  • Linux下查看shell的类别:cat /etc/shellsimage.png ⚪bash ------大多数...
    看起来很沉默阅读 244评论 0 0
  • BASH SHELL变量主要分为4种: 用户自定义变量、环境变量、位置变量、预定义变量。 本文主要介绍这4种变量:...
    DBA成长之路阅读 140评论 0 0
  • 1、本地变量 当前bash有效,新开一个窗口【新的bash】无效; 2、位置变量 $1,$2比如:shell_eg...
    努力修炼的小小菜鸟阅读 251评论 0 0
  • 1. 变量定义 跟编程语言不一样,shell变量没有类型,定义变量的时候,直接写变量名,然后赋值。比如name=l...
    liwsh阅读 283评论 0 0