二十八、Linux下shell脚本中的变量

本文深入探讨Linux Shell脚本中的变量与函数概念,包括变量的定义、作用范围、命名规则及使用方法,同时讲解了如何通过命令执行结果设置变量,以及如何在脚本中定义和调用函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二十八、Linux下shell脚本中的变量

28.1 变量的介绍

1)变量的定义

  • 变量是计算机内存的单元(即变量就是内存中一片区域的地址),其中存放的值可以改变。当 Shell 脚本需要保存一些信息时,如一个文件名或一个数字,就把它存放在一个变量中。

2)变量存在的意义

  • 命令无法操作一直变化的目标
  • 用一串固定的字符来表示不固定的目标可以解决此问题

28.2 shell中变量定义方式

28.2.1 环境级别

  • 只对当前环境生效,当环境关闭后变量就失效
  • export a=1
  • 实践

28.2.2 用户级别

  • 只对某个指定用户生效,其他的用户不生效
  • vim ~/.bash_profile修改配置文件
  • 改完配置文件执行source生效
  • 实践

28.2.3 系统级别

  • 对整个系统生效,本系统中所有的用户也生效
  • vim /etc/profile 修改配置文件
  • 执行source生效
  • 实践

28.3 变量名称

  • 对于变量的名称不能以数字开头
  • 建议变量名称短时全用大写字符,名称长时用_区分子类
  • 例如:WEOOPP、WEOOPP_Linux

28.4 变量的用法

28.4.1 变量的转译

  • \ 转译单个字符
  • “ ” 软引用,批量转译特殊字符,但是不能转译 / ` $ !
  • ' ' 强引用,批量转译所有的特殊字符
  • 实践

28.4.2 变量的声明

  • 声明变量{ }
  • 实践

28.4.3 变量的数组

  • a=(1 2 3 4 5 ) 定义一个数组

  • echo ${a[0]}输出数组的第一个字符

  • echo ${a[-1]}输出数组的倒数第一个字符

  • echo ${a[*]}输出数组的所有字符,所有的字符是一个整体

  • echo ${a[@]}输出数组的所有字符,每个字符都是单个的

  • 实践

  • 数组的定义

  • @ 和 *的比较

    述

  • 练习:建立userfile文件中的所有用户

28.5 shell中设定别名

28.5.1 临时设定

  • alias xie=‘vim’ 临时设定一个别名
  • 实践

28.5.2 用户设定

  • 指定用户生效别名
  • vim ~/.bashrc 修改配置文件
  • sourc生效
  • 实践

28.5.3 系统设定

  • 对整个系统生效。系统中的用户也都生效
  • vim /etc/bashrc 修改系统的配置文件
  • sourc生效
  • 实践

28.5.4 别名删除

  • unalias 删除命令

28.6 shell中的用户变量

28.6.1 用户变量介绍

  • 环境变量(environment variables):一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。默认情况下,执行命令时需要用命令的绝对路径或者./去执行。如果把命令放到设置了环境变量的目录中,则该命令可以直接用命令的名称去调用,而不需要加路径。
  • 用户变量的查看
echo $PATH  

28.6.2 用户设定

  • 只能在指定用户中使用
  • vim ~/.bash_profile 修改配置文件
  • export PATH=$PATH:/weoopp 设定过程中不能出现错误
  • source 加载
  • 实践

28.6.3 系统设定

  • 当前系统以及当前系统用户都可以使用
  • vim /etc/profile 修改配置文件
  • export PATH=$PATH:/weoopp 设定过程中不能出现错误
  • source 加载
  • 实践

28.7 利用命令的执行结果设定变量

28.7.1 直接利用命令执行结果

28.7.2 脚本中的传参

28.7.2.1 非交互式传参
  • 将脚本之外的参数传递到脚本内部,如执行create_user.sh userfile passfile时,是将userfile和passfile文件中的内容传递到脚本之中去。
  • 结果分析
    $0 is /mnt/test.sh #脚本本身
    $1 is text #脚本后所输入的第一串字符
    $2 is linux #脚本后所输入的第二串字符
    $3 is redhat #脚本后所输入的第三串字符
    $* is weiwei linux redhat #脚本后所输入的所有字符"weiwei linux redhat"
    $@ is weiwei linux redhat #脚本后所输入的所有字符’weiwei’ ‘linux’ ‘redhat’
    $# is 3 #脚本后所输入的字符串个数
  • 脚本
  • 传参
  • 练习
28.7.2.2 交互式传参
  • read普通的变量赋值
  • read -p “ input” 含有输入提示的变量赋值
  • read -s 输入时隐藏输入的变量赋值
  • 演示

28.8 脚本函数

函数通俗理解:将脚本的程序模块写成一个字符串,然后调用该字符串就可以使用该模块。

函数模板

函数名()
{

函数内容

}




函数调用


函数名 # 直接使用函数名就可以调用函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值