bash变量

shell变量

变量:是计算机语言中储存计算结果或表示值的抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如 Haskell )中,变量可能是不可变( immutable )的。在一些语言中,变量可能被明描述为能表示可变状态、具有存储空间的抽象(如在 Java 和 Visual Basic 中);但另外一些语言可能使用其它概念(如 C 的对象)来指称这种抽象,而不严格定义“变量”的准确外延。

shell变量的特性:

  • 没有众多的存储类及类型限制,都是字符串
  • 不需要预先定义,可以直接赋值

变量的定义

变量定义的格式:
变量名=字符串
实例:

user=lcc
echo $user

在这里插入图片描述
shell中的变量名可以有字母,数字,下划线组成。

  • 只能由字母或下划线开头
  • 建议不要使用命令关键字(用help可以查看系统保留关键字)

变量的赋值

直接赋值:

  • 在等号=的两边不能有空格
  • 如果在变量的值中包含空格,需要使用单引号‘’或者双引号""
  • 如果赋值的是一个已存在的变量名,则会覆盖掉原有的内容

实例:

user1=lcc1
user2='lcc2'
user3="lcc3"
echo $user1
echo $user2
echo $user3

在这里插入图片描述

命令结果进行赋值

  • 反引号(`)
  • $(command)
user1=`echo lcc`
user2="lcc `echo MAN`"

实例1:
使用反引号进行命令结果赋值
在这里插入图片描述
实例2:
使用$()进行命令结果赋值

user1=$(echo lcc)

在这里插入图片描述

使用read定义变量

用法:
read [-s 关闭回显] [-a 数组] [-n 读取字符数] [-p 提示符] [-t 超时] [名称 …]
例如:

#定义一个变量
read user1
lcc
echo $user1
#定义两个变量,中间用空格隔开
read user2 user3
lcc2 lcc3
echo $user2
echo $user3
#使用命令提示符,提示输入,5秒不输入就会超时
read -p "please enter your username:" -t 5 user4
lcc4
echo $lcc4

使用declare定义变量

参数:

  • -r:设置只读
  • -l:使值中所有的大学字母转换成小写
  • -u:小写转换成大写
    例如:
declare -r user1=lcc1
echo $user1
declare -l user2=LCC2
echo $user2
declare -u user3=lcc3
echo $user3

在这里插入图片描述

引用变量

为了区分到底引用的是变量的值还是字符串,需要在变量名前面使用美元符号$。
在使用变量时,如果变量存在于引号内,则必须使用双引号。
例如:

user1=lcc
user2=hello$user1
user3="hello$user1"
user4="hello"$user1"hello"
user5='hello'$user1'hello'

在这里插入图片描述

扩展变量

引用变量除了使用 v a r 格 式 直 接 引 用 变 量 之 外 , 还 可 以 使 用 var格式直接引用变量之外,还可以使用 var使{var}的方式对变量进行扩展。常见的形式如下表:

表达式说明
${var}等同于$var
${var:word}如果$var的变量值为空或未赋值,则返回word字符串,防止变量为空或因未定义而导致异常
${var:=word}如果 v a r 的 变 量 值 为 空 或 未 赋 值 , 则 设 置 这 个 变 量 值 为 w o r d , 并 返 回 其 值 。 位 置 变 量 和 特 殊 变 量 不 适 用 。 基 本 同 上 一 个 , 但 该 变 量 又 额 外 给 var的变量值为空或未赋值,则设置这个变量值为word,并返回其值。位置变量和特殊变量不适用。基本同上一个,但该变量又额外给 varwordvar变量赋值了。
${var:?word}如果 $var 变量值为空或未赋值,那么 word 字符串将被作为标准错误输出,否则输出变量的值。用于捕捉由于变量未定义而导致的错误,并退出程序。
${var:+word}如果 $var 变量值为空或未赋值,则什么都不做,否则返回 word 字符串的值,也就是整个表达式的值为 word 。

特殊变量

位置参数:
n : 传 递 给 脚 本 或 函 数 的 参 数 。 n 是 一 个 非 负 的 整 数 , 表 示 第 几 个 参 数 。 在 n 大 于 或 者 等 于 10 的 时 候 , 需 要 使 用 n:传递给脚本或函数的参数。n是一个非负的整数,表示第几个参数。在n大于或者等于10的时候,需要使用 nnn10使{n}

#新建脚本
sudo vim test2.sh
#!/bin/bash
echo $1 $2 $3
echo ${12} $12
:wq
bash test2.sh 1 2 3 4 5 6 7 8 9 0 a b c

在这里插入图片描述

其他特殊参数:

变量含义
$0当前脚本的文件名
$#传递给脚本或函数的所有参数
$*传递给脚本或函数的所有参数
$?获取执行上一个指令的执行状态返回值
$$获取当前执行的shell脚本的进程号
$!获取上一个在后台工作的进程的进程号
$_获取在此之前执行的命令或脚本的最后一个参数

删除变量

unset:

  • -f:仅删除函数
  • -v:仅删除变量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值