当前位置: 首页 > 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://www.lqws.cn/news/200773.html

相关文章:

  • qt使用笔记二:main.cpp详解
  • PostgreSQL 的扩展pageinspect
  • 基于Python学习《Head First设计模式》第八章 模板方法模式
  • 基于Python学习《Head First设计模式》第七章 适配器和外观模式
  • moon服务器引擎-协议生成报错
  • 意识上传伦理前夜:我们是否在创造数字奴隶?
  • Scade 语言概念 - 方程(equation)
  • 1990-2023年 地级市人工智能企业数量-社科经管实证数据
  • Linux 文件系统与 I/O 编程核心原理及实践笔记
  • Python Cookbook-7.12 在 SQLite 中储存 BLOB
  • 华为云Flexus+DeepSeek征文|Dify - LLM 云服务单机部署大语言模型攻略指南
  • 又是一年高考季
  • 台式机电脑CPU天梯图2025年6月份更新:CPU选购指南及推荐
  • 《经济学原理》第9版第6章供给、需求和政府政策
  • 性能优化笔记
  • IT学习方法与资料分享
  • Srping Cloud Gateway 跨域配置 CorsWebFilter
  • 使用 Ansible 在 Windows 服务器上安装 SSL 证书系列之二
  • Qt Quick Test模块功能及架构
  • java_网络服务相关_gateway_nacos_feign区别联系
  • DeepSeek09-open-webui使用
  • 第二十八课:深度学习及pytorch简介
  • 现代C++特性(一):基本数据类型扩展
  • 低功耗MQTT物联网架构Java实现揭秘
  • 基于Spring Boot的云音乐平台设计与实现
  • C++类和对象(上)
  • C++ 信息学奥赛总复习题(第一章)
  • 【HarmonyOS 5】运动健康开发实践介绍以及详细案例
  • K8S认证|CKS题库+答案| 5.日志审计
  • Python Cookbook-7.11 在 PostgreSQL 中储存 BLOB