ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Shell 编程入门:变量、数据类型与常用命令详解

2026/8/31 4:47:38 拓冰建站 浏览量
Shell 编程入门:变量、数据类型与常用命令详解 本文整理了 Shell 编程中最基础也是最重要的三部分内容变量、数据类型与常用命令。适合刚接触 Shell 的初学者快速上手。一、Shell 变量1.1 定义与使用命名规则字母、数字、下划线组成不能以数字开头。variablevalue# 无空格variablevalue# 单引号variablevalue# 双引号leta1020c$(ls-l/etc)⚠️ 注意赋值号 两侧不能有空格这与大多数编程语言不同。引用变量在变量名前加 $推荐使用 ${变量名} 形式。authorStevenecho${author}# 推荐echo$author# 简写1.2 变量操作操作命令/方式说明修改变量名新值直接重新赋值只读readonly 变量名设为只读后不可修改删除unset 变量名删除变量只读变量无法删除1.3 作用范围默认情况下变量只在当前 Shell 进程中有效。使用 source xx.sh 可在当前终端环境中执行脚本。使用 export 变量名 可将变量导出到子进程。1.4 特殊变量变量含义$0当前脚本文件名$n第 n 个参数$1、$2…${10}$#参数个数$*/$所有参数$$当前进程 ID$?上一个命令的退出状态 / 函数返回值示例向脚本传递参数#!/bin/bashecho文件名:$0echo第一个参数:$1echo第二个参数:$2echo所有参数:$echo参数总数:$#获取函数返回值#!/bin/bashfunctionadd(){return$(expr$1 $2)}add3050echo$?# 输出 80return 在 Shell 中表示退出状态范围 0~255并非真正的返回值。二、Shell 数据类型Shell 是弱类型语言主要数据类型为字符串和数组。2.1 字符串三种定义方式的区别形式变量解析转义空格str❌ 不解析❌ 原样输出可包含str✅ 解析变量✅ 支持转义可包含str✅ 解析变量—❌ 不能含空格常用操作# 获取长度STRHello world!echo${#STR}# 12# 拼接fooHellobarworldstr1$foo$bar# Helloworldstr2$foo$bar# Hello world# 比较if[[$USER_NAMEterry]];then...fiif[[$USER_NAME!terry]];then...fi# 截取从左边开始0 计数urlwww.github.comecho${url:5:6}# github# 截取从右边开始1 计数echo${url:0-3:3}# com2.2 数组# 定义arr(ele1 ele2 ele3)nums(2040https://github.com)# 元素类型可不同# 获取元素echo${arr[0]}# 第一个元素echo${arr[]}# 所有元素echo${#arr[]}# 数组长度# 拼接array_new(${array1[]}${array2[]})# 删除unsetarr[1]# 删除下标为 1 的元素unsetarr# 删除整个数组三、Shell 常用命令3.1 内建命令 vs 外部命令内建命令由 Bash 自身提供如 cd、echo执行快相当于调用当前 Shell 的函数。外部命令文件系统中的可执行文件如 ifconfig执行时会触发磁盘 I/O 并 fork 新进程。可用 type 命令名 判断$typecdcdis a Shellbuiltin$typeifconfigifconfigis /sbin/ifconfig3.2 alias别名aliassdshutdown -h nowaliastimestampdate %s3.3 echo用于输出字符串默认末尾加换行符。nametsejxechoHello world!echo${name}echo${name}的网址是${url}# 双引号解析变量echo${name}的网址是${url}# 单引号原样输出3.4 read读取输入read-p请输入信息 name url ageecho网站$name常用选项-p显示提示信息-s静默输入适合密码-t指定超时时间秒3.5 exit退出进程exit8# 退出并返回状态码 8状态码范围0~2550 表示成功其他表示失败可用 $? 接收上一个命令的退出状态3.6 test条件检测用于检测条件是否成立可简写为 []。文件检测选项作用-e filename文件是否存在-d filename是否为目录-f filename是否为普通文件-r filename是否可读-w filename是否可写-x filename是否可执行-s filename是否非空逻辑运算选项作用-a逻辑与AND-o逻辑或OR!逻辑非NOT示例#!/bin/bashreadfilenamereadurliftest-w$filenametest-n$url;thenecho$url$filenameecho写入成功elseecho写入失败fi四、环境变量配置4.1 常用系统环境变量变量说明$HOME当前用户主目录$PATH命令搜索路径$USER当前用户名$UID当前用户 ID$PS1命令提示符格式修改 PATH# 临时生效exportPATH$PATH:/usr/local/new/bin# 永久生效添加到 ~/.bashrc 末尾source~/.bashrc# 立即生效4.2 配置文件加载顺序文件作用范围/etc/profile所有用户/etc/profile.d/所有用户脚本目录~/.bash_profile当前用户~/.bashrc当前用户/etc/bashrc所有用户