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

Linux Bash(二)

 Shell 的变量功能

Bash 中的变量不仅仅是“数据存储”,

它还影响着系统运行、命令行为、用户环境等方方面面。

2.1 什么是变量?

变量(Variable)是用来存储数据值的名字,

通过名字引用其内容,而不是直接使用数值。


Shell 变量与程序语言的区别:

Shell 中变量默认都是字符串类型;不需要提前声明类型;Bash 会在使用时自动解释。

查看变量:

echo $变量名

2.2 变量的使用与设置

(1)显示变量内容

echo $PATH

echo $USER

(2)设置变量规则

规则  示例

变量名区分大小写    A=1 与 a=1 不同

“=” 两边不能有空格  name=Tom  name = Tom

使用 $变量名 调用值 echo $name

双引号内可解析变量   "My name is $name"

单引号内不解析变量   'My name is $name'

反引号(cmd)或 $(cmd) 可执行命令替换    now=$(date)

(3)取消变量

unset 变量名

示例:

unset name

2.3 环境变量的功能

环境变量(Environment Variable)是对 整个系统或子进程都可见的变量。

普通变量只在当前 shell 生效。

普通变量 → 环境变量:

name="Tom"

export name

验证:

echo $name

bash     # 开新 shell

echo $name   # 子 Shell 中仍然存在

(1)常见环境变量

变量名 功能

PATH    可执行文件搜索路径(用冒号分隔)

HOME    当前用户家目录

SHELL   当前用户的 shell 类型

USER / LOGNAME  当前登录用户名

PWD 当前工作目录

LANG / LC_ALL   语系(locale)设置

PS1 主提示符(命令行前缀样式)

MAIL    邮件通知路径

(2)查看所有变量

命令  功能

set 显示所有变量(包含本地变量+环境变量+函数)

env 显示所有环境变量

export -p   显示当前导出的环境变量

(3)修改命令提示符 PS1

echo $PS1

# 默认:[user@hostname dir]$

PS1="[\u@\h \W]\$ "

转义符 含义

\u  用户名

\h  主机名

\w  当前路径

\W  当前目录名

\$  超级用户显示 #,普通用户 $

(4)特殊变量 $ 与 ?

变量  含义

$   当前 Shell 的 PID

?   上一条命令的退出状态码(0 为成功,非 0 为失败)

$0  当前脚本名

$#  参数个数

$1 $2 ...   第1、第2个参数

$@ / $* 所有参数列表

示例:

ls /not_exist

echo $?

# 输出非0,表示执行失败


2.4 语系变量

 locale:影响显示结果,决定系统的语言、时间、货币等显示格式。

常见命令:

locale

locale -a   # 查看系统支持的语言环境

常见变量:

LANG

LC_ALL

LC_TIME

LC_MESSAGES

2.5 变量的有效范围

类型  有效范围    设置方式

局部变量(local) 当前 shell 内有效    var=value

环境变量(global)    当前 shell + 子进程有效    export var=value

局部函数变量  仅在函数内部有效    local var=value

示例:

myfunc() {

    local x=100

    echo "Inside: $x"

}

echo $x  # 不会显示

2.6 变量键盘读取、数组与声明

(1)键盘读取:read

read var

echo "You entered: $var"

常用选项:

选项  功能

-p  提示文字

-t  设置超时(秒)

-n  限制输入长度

-s  隐藏输入(常用于密码)

示例:

read -p "Enter name: " name

read -s -p "Password: " passwd


(2)数组(Array)

Bash 支持 一维数组(不支持多维)。

定义与使用:

arr=(one two three)

echo ${arr[0]}       # one

echo ${arr[@]}       # 输出全部元素

echo ${#arr[@]}      # 元素数量

赋值与删除:

arr[3]="four"

unset arr[1]

(3)变量声明:declare 或 typeset

用法  功能

declare -i var  定义为整数

declare -r var  定义为只读

declare -a var  定义为数组

declare -x var  定义并导出为环境变量

declare -f  显示函数定义

declare -p var  显示变量属性和值

示例:

declare -i num=10

num=num+5

echo $num  # 输出15

2.7 与文件系统及程序限制关系 — ulimit

ulimit 用于查看或限制 当前 Shell 会话 对系统资源的使用。

选项  功能

-a  显示所有限制

-f  限制可创建文件的最大大小

-t  限制 CPU 时间(秒)

-n  限制最大打开文件数

-u  限制最大进程数

示例:

ulimit -n

# 输出:1024

ulimit -n 2048

# 修改最大打开文件数


2.8 变量内容的删除、取代与替换(字符串操作)

Bash 内建丰富的字符串处理语法:

语法  功能  示例  结果

${var#pattern}  从前删除最短匹配    ${path#*/}  删除最前面的 /

${var##pattern} 从前删除最长匹配    ${path##*/} 取文件名

${var%pattern}  从后删除最短匹配    ${file%.txt}    删除扩展名

${var%%pattern} 从后删除最长匹配    ${url%%/*}  取主域名

${var/pattern/repl} 替换第一个匹配 ${name/foo/bar} 把 foo 换成 bar

${var//pattern/repl}    替换所有匹配  ${str// /_} 空格换成下划线

${#var} 获取长度    ${#str} 字符数

${var:-default} 若未定义则使用默认值  ${USER:-guest}  



http://www.dtcms.com/a/511354.html

相关文章:

  • 上海建设单位工程备案网站宜宾网站建设网站
  • AI: 生成Android自我学习路线规划与实战
  • 项目实践2—全球证件智能识别系统(Qt客户端开发+FastAPI后端人工智能服务开发)
  • 百度面试题解析:新生代分区、垃圾回收算法、虚拟机栈和类加载(四)
  • AIDC爆火,储能企业跨界抢滩AI能源“新战场”
  • h5游戏免费下载:飞越天空之城
  • 温州市建设厅网站首页什么网站可以自己做房子设计图
  • 基于多路复用技术的高并发服务器组件
  • Linux 进程控制块(PCB)解析:深入理解进程管理机制
  • 子查询总拖慢查询?把它变成连接就能解决?
  • YOLOv3 核心笔记
  • 谷歌发布首个隐私安全模型VaultGemma
  • 什么情况下可能会导致 Redis 阻塞?
  • 保姆级教程vscode创建uniapp vue3+ts+pinia项目并实现自动导入、打包功能
  • 网站标题改动网络安全工程师工作内容
  • 外贸公司网站制作公司wordpress 视频播放器插件
  • 【时时三省】(C语言基础)文件读写的出错检测
  • Visual Basic 使用公共对话框
  • Amazon Bedrock助力飞书深诺:打造电商广告智能分类的“核心引擎”
  • Android App Startup 库使用说明文档,初始化不再用Application了...
  • 【鸿蒙开发手册】重生之我要学习鸿蒙HarmonyOS开发
  • 市面上的开源 AI 智能体平台使用体验
  • 2025重庆国际工业自动化及机器人展览会将带来那些新技术新体验?
  • 电商网站的建设背景找素材去哪个网站
  • 厦门杏林建设企业网站网络营销的优势有哪些
  • 个人信息出境认证办法
  • 复杂结构数据挖掘(三)关联规则挖掘实验
  • Vue3 + Vite 生产环境缓存更新问题及自动检测方案详解
  • D3QN + 优先经验回放(PER)实现全解析:从数据树到训练循环(附伪代码与流程图)
  • 查公司的国家网站有哪些域名备案时网站名称