Shell学习02:Shell变量

本文围绕 Shell 变量展开,介绍了定义变量的规则,如命名只能用英文字母、数字和下划线等。还说明了使用变量时加 $ 符号,建议加括号以避免识别错误。此外,阐述了 readonly 定义只读变量、unset 删除变量,以及环境、本地等多种变量类型。

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

定义变量

定义变量时,变量名不加美元符号($),并且变量名和等号中不能有空格。如:

tempVar="variable"

同时,变量名的命令规则如下:

  • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
  • 中间不能有空格,可以使用下划线 _
  • 不能使用标点符号
  • 不能使用bash里的关键字(可用 compgen -k 命令查看保留关键字)。

使用变量

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

tempVar="variable"
echo $tempVar
echo ${tempVar}

变量名外面的大括号是可选的,加大括号是为了帮助解释器识别变量的边界,防止出现识别错误变量。如:

str="shell"
echo "I am learning ${str}skill"

打印出来就是I am learning shellskill,如果没有大括号,则打印出来的内容是I am learning,系统识别strskill为一个变量,但并没有此变量,因此打印变量为空。所以使用变量时建议加上大括号,更为规范。

readonly 只读变量

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

#!/bin/bash
myVar="change"
readonly myVar
myUrl="http://www.runoob.com"

运行时报错:

/bin/sh: NAME: This variable is read only.

删除变量

使用 unset 命令就可以删除变量。

unset myVar

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

(当脚本文件规模不大时,要删除变量的话直接在脚本里把变量去掉就行了。)

变量类型

  • 环境变量
  • 本地变量
  • 局部变量
  • 位置变量
  • 特殊变量(bash内置变量,也称系统变量)
环境变量
export var_name=value    //作用域为当前shell进程及其子进程`

给Linux系统配置过JDK的同学应该对这个变量很熟悉

本地变量
var_name=value   //本地变量,作用域为当前shell进程,对当前shell外的其他shell进程,v包括当前shell,子shell进程均无效
局部变量
local var_name=value  //局部变量,作用域为当前代码段,常用于函数

局部变量也是一种本地变量

位置变量
$1,$2,$3, ....  //用来引用脚本的参数
shift [num]     //位置变量使用完以后退出,后面的参数向前推进 
shift 1         //一次往前推,例:$1完成任务后变成$2执行  
特殊变量
$#   //是传给脚本的参数个数
$0   //是脚本本身的名字
$!   //是shell最后运行的后台Process的PID
$@   //是传给脚本的所有参数的列表
$*   //是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$   //是脚本运行的当前进程ID号
$?   //是显示上条命令的退出状态,0表示没有错误,其他表示有错误
bash内建环境变量,这些变量不能当作自定义变量使用
PATH
SHELL
UID
HISTSIZE
HOME
PWD
HISTFILE
PS1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值