当前位置: 首页 > news >正文

【Linux shell】shell中的变量——构建脚本逻辑的基石


目录

系统变量

自定义变量

只读变量

数组变量

特殊变量


 

🔥个人主页 🔥

😈所属专栏😈 

系统变量

系统变量是 Linux 系统预定义的全局变量,用于存储与系统环境、用户会话相关的关键信息

变量名作用描述示例值
$PATH命令搜索路径,多个路径用冒号分隔/usr/bin:/bin:/usr/sbin
$HOME当前用户的主目录/home/username
$USER当前登录的用户名username
$SHELL当前使用的 Shell 程序路径/bin/bash
$PWD当前工作目录/home/username/projects
$OLDPWD上一次的工作目录(cd - 命令会使用)/home/username/Documents

1.当前用户的主目录 echo $HOME

echo $HOME

2.当前工作目录 echo $PWD

echo $PWD

3.当前使用的 Shell 程序路径 echo $SHELL

 echo $PWD

3.当前登录的用户名 echo $USER

 echo $USER

 

3.命令搜索路径,多个路径用冒号分隔echo $PATH(系统终端可执行命令的位置,对应bashrc中的export PATH)

 echo $PATH

自定义变量

  • 变量与值中间不能有空格
  • 使用$+变量名访问对应变量的值,例如$a
  • 变量后值默认是字符串
  • 若变量的值有空格,应该用引号包围
  • unset撤销变量的值班
a=3
echo $a

 

a=3
unset a
echo $a

a="hello world"
echo $a

只读变量

语法:readonly 变量(只能读,不能修改)

readonly PI=3.14
echo $PI

 错误:不能修改只读变量

readonly PI=3.14
PI = 2
echo $PI

数组变量

语法:数组名=(元素1,元素2,元素3)

  • 用法1:访问数组中的元素 ,访问第n个元素${数组名[n]}
  • 用法2:输出数组中的元素 ,${数组名[@]}
  • 用法3:输出数组中的元素个数 ,${#数组名[@]}
fruits=("apple" "banana" "cherry")
echo "第二个元素: ${fruits[1]}"  
echo "所有元素: ${fruits[@]}"   
echo "元素个数: ${#fruits[@]}"   
echo $0

特殊变量

变量含义
$0脚本或 Shell 本身的名称
$1-$9脚本的第 1 到 9 个参数,${10} 表示第 10 个参数
$#参数的数量
$*所有参数(作为单个字符串)
$@所有参数(作为独立字符串)
$?上一个命令的退出状态码(0 = 成功,非 0 = 失败)
$$当前 Shell 进程的 PID
$!最后一个后台进程的 PID

 1.$0 为脚本名称

echo $0

2.$1 ,$2 为脚本的第一个参数第二个参数,以此类推

echo "$0 $1 $2"

3.$#参数的数量

echo $#

4.$@所有参数(作为独立字符串),$*所有参数(作为单个字符串)

echo "$@ $*" 

5.$?上一个命令的退出状态码(0 = 成功,非 0 = 失败)

b=hello world
echo $?

非0执行失败,因为有空格时未加引号

b="hello world"
echo $?

 返回0说明执行成功


文章转载自:

http://tdlR0YZq.hdqqr.cn
http://Fb3O2qA9.hdqqr.cn
http://9rxZ9tZz.hdqqr.cn
http://EUAv4fQC.hdqqr.cn
http://pXcYegGW.hdqqr.cn
http://3LyA92Le.hdqqr.cn
http://mFW48N7i.hdqqr.cn
http://3ObiqUTw.hdqqr.cn
http://8gSNmwzq.hdqqr.cn
http://BZebmg5S.hdqqr.cn
http://8v11Eg2G.hdqqr.cn
http://12sLNOUc.hdqqr.cn
http://UOXXcPAf.hdqqr.cn
http://50HXfvTu.hdqqr.cn
http://UUFVkQZm.hdqqr.cn
http://RoGNsDej.hdqqr.cn
http://Udg0aXMp.hdqqr.cn
http://IKwZsz0R.hdqqr.cn
http://w7fs6ap3.hdqqr.cn
http://E94yJB8f.hdqqr.cn
http://2kfJ7zBr.hdqqr.cn
http://D83Ubyvv.hdqqr.cn
http://ErU7qTdO.hdqqr.cn
http://eUz9VCnD.hdqqr.cn
http://6wNWSw8u.hdqqr.cn
http://iGMF671C.hdqqr.cn
http://6jUQdFqs.hdqqr.cn
http://C3ZmHLx9.hdqqr.cn
http://JsS5Kcxc.hdqqr.cn
http://ty3PG2fv.hdqqr.cn
http://www.dtcms.com/a/236307.html

相关文章:

  • Linux(生产消费者模型/线程池)
  • TripGenie:畅游济南旅行规划助手:个人工作纪实(二十二)
  • Linux(13)——Ext系列文件系统
  • 1.5 Node.js 的 HTTP
  • 纳米AI搜索与百度AI搜、豆包的核心差异解析
  • Faiss向量数据库全面解析:从原理到实战
  • Linux(14)——库的制作与原理
  • ASTRA论文总结
  • 【Linux】系统部分——进程控制
  • npm安装electron下载太慢,导致报错
  • Spark 之 AQE
  • 关于脏读,幻读,可重复读的学习
  • SDC命令详解:使用set_port_fanout_number命令进行约束
  • Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(上)
  • pycharm 中文字体报错
  • PyCharm集成Conda环境
  • Doris 与 Elasticsearch:谁更适合你的数据分析需求?
  • 【Java学习笔记】String类(重点)
  • 从零开始搭建 Pytest 测试框架(Python 3.8 + PyCharm 版)
  • Android Studio 解决首次安装时下载 Gradle 慢问题
  • 【数据分析】探索婴儿年龄变化对微生物群落(呼吸道病毒和细菌病原体)结构的影响
  • 使用 C/C++ 和 OpenCV 提取图像的感兴趣区域 (ROI)
  • 游戏(game)
  • Mybatis-Plus的LambdaWrapper
  • Python_day47
  • 华为云Flexus+DeepSeek征文 | 从零到一:用Flexus云服务打造低延迟联网搜索Agent
  • Python入门手册:异常处理
  • 微前端 - Native Federation使用完整示例
  • JavaWeb的一些基础技术
  • Jenkins持续集成CI,持续部署CD,Allure报告集成以及发送电子 邮件