shell变量

1、变量的理解

1、变量本质 内存中的一块区域 变量名 位置

2、存放经常用到的内容

3、Linux下面的变量直接使用即可

4、数据类型(变量在内存中 所占多少空间 变量类型) 不同类型的变量存放不同类型的数据

  

2、变量的类型

—— 环境变量(全局变量 )
—— 普通变量(局部变量)
—— shell变量
 
(1)环境变量(全局变量 )
所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
系统定义
大写字母
在系统中 各个地方基本都适用
env set declare
unset 取消变量
export

 

(2)普通变量(局部变量)

局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。

命名规则
不能以数字开头
不要占用系统环境变量
驼峰:oldboyAgeSex=1
age_person = 1

 

(3)shell变量

shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

  

3、变量赋值和使用

(1)变量赋值

定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:

name = "yinghui"

  

(2)变量使用

使用一个定义过的变量,只要在变量名前面加美元符号即可,如:

your_name="qinjx"
echo $your_name echo ${your_name}

 

4、只读变量

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变

下面的例子尝试更改只读变量,结果会报错:

#!/bin/bash
myUrl="https://www.google.com"
readonly myUrl
myUrl="https://www.runoob.com"

  

5、删除变量(unset)

unset variable_name

# 变量被删除后不能再次使用。unset命令不能删除只读变量。

  

6、shell字符串

(1)字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。

(2)拼接字符串:

your_name="runoob"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting  $greeting_1
# 使用单引号拼接
greeting_2='hello, '$your_name' !'
greeting_3='hello, ${your_name} !'
echo $greeting_2  $greeting_3

(3)获取字符串长度

string="abcd"
echo ${#string} #输出 4

(4)提取子字符串

如下——从字符串第 2 个字符开始截取 4 个字符:

string="runoob is a great site"
echo ${string:1:4} # 输出 unoo

(5)查找子字符串

查找字符 i 或 o 的位置(哪个字母先出现就计算哪个):

string="runoob is a great site"
echo `expr index "$string" io`  # 输出 4

  

7、shell数组

bash支持一维数组(不支持多维数组),并且没有限定数组的大小。

类似于 C 语言,数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。

(1)定义数组

在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:

数组名=(值1 值2 ... 值n)

例如:

array_name=(value0 value1 value2 value3)

或者:
array_name=(
value0
value1
value2
value3
)

还可以单独定义数组的分量:
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen

  

  

(2)读取数组

格式:

${数组名[下标]}

使用 @ 符号可以获取数组中的所有元素,例如:

echo ${array_name[@]}

(3)获取数组的长度

# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}

  

8、特殊位置变量

 

 

9、特殊状态变量

 

 

10、变量子串

 

 

11、变量相关的文件

/etc/profile

/etc/bashrc

~/.bashrc

~/.bash_profile

/etc/profile.d/*.sh

  

12、变量扩展

 

 

posted @ 2021-08-02 09:57  映辉  阅读(163)  评论(0)    收藏  举报