(二)变量、数组、函数——变量定义读取、基本数组与关联数组的定义访问、函数语法等

Shell 专栏收录该内容
5 篇文章 6 订阅

一、变量介绍

  在编程中,总有一些数据需要临时存储在内存中,以便后续使用时能够快速取出。内存在系统启动时会按照一个单位(1B)被划分为若干块,然后进行统一编号(16进制编号),系统会对内存的使用情况做记录,保存在内存跟踪表中

计算机单位:
1B  = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
...

  变量变量是编程中最常用的一种临时在内存中存取数据的方式,相当于一种自定义的逻辑地址

1.1、变量分类

  1. 本地变量:用户私有变量,只有本用户可以使用,保存在家目录下的.bash_profile、.bashrc文件中;
  2. 全局变量:所有用户都可以使用,保存在/etc/profile、/etc/bashrc文件中;
  3. 临时变量:用户自定义的变量,比如脚本中的变量

1.2、变量操作(定义、读取)

  1. 变量命名:            (注意:变量名与等号之间不能有空格

变量名命名规则:
    1)、变量名只能由数字、字母、下划线组成,且首字母不能以数字开头;     
    2)、变量名中间不能有空格;                                      
    3)、不能使用标点符号;
    4)、不能使用bash里的关键字(可以用help命令查看保留关键字);

  2. 变量定义变量名=值     (注意:定义的变量首字母大写,区别于全局变量、字符串和命令

[marc@localhost ~]$ Name="sherwood"         # 也可 通过set命令定义变量  set Name="shieldon"
[marc@localhost ~]$ Age=25                  # set Age=15
[marc@localhost ~]$ Score=88.8

  3. 变量读取echo $变量名

[marc@localhost ~]$ echo $Name
sherwood
[marc@localhost ~]$ echo $Age
25
[marc@localhost ~]$ echo $Score
88.8
[marc@localhost ~]$ echo "$Name $Age $Score"
sherwood 25 88.8

  4. 变量取消unset 变量名

[marc@localhost ~]$ unset Name          
[marc@localhost ~]$ echo $Name

[marc@localhost ~]$ 

  5. 全局变量定义export 变量名=值

[marc@localhost ~]$ export Name="sherwood"

上述设置的变量都是一次性变量(临时变量),系统重启就会消失;
如果希望设置的本地变量或全局变量永久有效,可以将需要设置的变量写在对应的变量文件中即可

  6. 永久变量定义将变量写入对应的变量文件,然后source 文件名使其生效

  • 本地变量:用户私有变量,只有本用户可以使用,保存在家目录下的.bash_profile、.bashrc文件中;
  • 全局变量:所有用户都可以使用,保存在/etc/profile、/etc/bashrc文件中;
本地变量:
[marc@localhost ~]$ tail -1 ~/.bashrc
Names="sherwoods"

全局变量:
[marc@localhost root]$ tail -1 /etc/profile
export Ages=50

二、数组介绍

2.1、基本数组(定义、访问)

数组可以一次性被赋予多个值,然后通过索引调用取出。
  
  1. 数组定义:

数组名称=(元素1 元素2 元素3 ...)

  2. 数组读出:

${数组名[索引值]}                 索引值默认从0开始计算

  3. 数组赋值:

一次性赋一个值:
             array[0]="tom"
             array[1]="jerry"
             array[2]="bob"
一次性赋多个值:
             array=(tom jack alice)    

  4. 数组查看:

declare -a        #查看系统声明过的数组

  5. 数组元素访问:

echo ${array[0]}       #访问数组中的第一个元素
echo ${array[@]}       #访问数组中的所有元素
echo ${#array[@]}      #访问数组中的元素个数
echo ${!array[@]}      #访问数组中的元素索引
echo ${array[@]:1}     #从数组中的第2个元素开始访问
echo ${array[@]:1:2}   #从数组中的第2个元素开始访问,访问2个元素

2.2、关联数组

关联数组类似于类似于Perl语言中的哈希键-值对

  1. 数组声明:

declare -A ass_array1
declare -A ass_array2      #声明两个关联数组

  2. 数组赋值:

一次性赋一个值:
             ass_array[index1]="tom"
             array[index2]="jerry"
             array[index3]="bob"
一次性赋多个值:
             array=([index1]="tom" [index2]="jack" [index3]=alice)        #引号可以不加    

  3. 数组读取:

echo ${ass_array[index1]}       #访问数组中的第一个元素
echo ${ass_array[@]}            #访问数组中的所有元素
echo ${#ass_array[@]}           #访问数组中的元素个数
echo ${!ass_array[index1]}      #访问数组中的元素索引

三、函数基础

格式:

语法1:

函数名() {
  代码块
  return N
}

语法2:

function 函数名 {
  代码块
  return N
}
#!bin/bash

start () {                                                   # 使用方法一定义函数时,符号之间的空格可以忽略
  echo "Apache satrt ...........................[OK]"
  #return 0                                                  # return N返回语句可以省略
} 

function stop {                                              # 使用方法二定义函数时,符号之间的空格可以必须添加
  echo "Apache stop ........................... [FAIL]"
  #return 0
}

start                                                        # 函数调用
start
stop

[marc@localhost Shell]$ bash function.sh 
Apache satrt ...........................[OK]
Apache satrt ...........................[OK]
Apache stop ........................... [FAIL]
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

Mr.Marc

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值