当前位置: 首页 > 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说明执行成功

相关文章:

  • 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 慢问题
  • 网站营销的优缺点/义乌最好的电商培训学校
  • 嘉兴网站制作/杭州seo薪资水平
  • 用html做的零食网站/网站优化排名易下拉霸屏
  • 做网站需要准备什么东西/济南竞价托管公司
  • 佛山网站建设官网/app拉新推广接单平台
  • 酒店网站 asp.net/百度官方版