news 2026/7/19 13:46:10

SHELL脚本(上)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SHELL脚本(上)

目录

1.shell基础

2.创建脚本基本流程

3.变量基础

4.特殊变量赋值

单引号和双引号的区别

反撇号与命令替换

read命令--交互式输入

5.变量运算

expr

let

bc计算器

6.变量类型与作用范围

自定义变量与环境变量​编辑

只读变量

位置变量

总结


1.shell基础

Shell是命令解释器,翻译用户和内核之间的对话
常见Shellbash(默认)、shtcsh
Shell脚本是命令集合,实现自动化操作
适合:系统管理、批量处理、自动化运维
shell脚本的构成
#!/bin/bach 👈脚本声明由/bin/bash目录解释
#注释信息 👈解释说明(没卵用,本质可有可无。)
命令语句 👈 实际执行 (做重要的)

示例:

2.创建脚本基本流程

创建文件添加权限检查语法执行脚本
↓ ↓ ↓ ↓
vim xxx.sh chmod+x bash -n ./xxx.sh

脚本执行方式

3.变量基础

定义一个变量

#格式:变量名=变量值(等号两边不能有空格!)
name="小明"
#规则:
# -只能包含字母、数字、下划线
# -不能以数字开头
# -区分大小写

变量的引用

基本引用:变量前加$符号
使用花括号表明变量范围:
fruit="苹果"
echo"${fruit}价格的RMB"

echo的高级用法

常用转义字符:\n → 换行 \t → 制表符(Tab) \c → 不换行 \ b → 退格 \\ → 输出\本身 \$ → 输出$

示例

4.特殊变量赋值

单引号和双引号的区别

tips:大大方方用双引号。不容易出毛病。

反撇号与命令替换

作用:把命令输出存到变量里

两种写法

#反撇号(位于Tab键上方)
time=`date +%T`
# $()推荐写法(更容易阅读)
time=$(date +%T)
$()的优势:容易嵌套
推荐使用 $()的写法

read命令--交互式输入

#基本方式
echo"请输入姓名:"
read name
echo"你好,$name"
#-p选项简化(推荐)
read-p"请输入姓名:"name
echo"你好,$name

示例

5.变量运算

expr

#expr做数学运算
expr10+5#输出:15
#运算符两边必须有空格!
expr1+1#输出:2
expr1+1#输出:1+1(当字符串了)
#乘法需要转义*
expr2\*3#输出:6

let

let改变的是变量自身

# expr方式:不修改变量
num=10
expr$num+5#输出15,但num还是10
# let方式:直接修改变量
num=10
letnum=num+5# num变成15
echo$num#输出:15

#简写

num=10
let num+=5# num = num + 5 = 15
letnum-=3# num = num - 3 = 12
let num*=2# num = num * 2 = 24
#幂运算
num=2
letnum=num**10# 210次方,num变成1024

bc计算器

bc计算器用于小数的计算

# bc浮点运算
echo"scale=2; 10/3"| bc#输出:3.33
# scale=2表示保留2位小数
#计算表达式
echo"scale=3; 10/3"| bc# 3.333
echo"5^2"| bc# 25(平方)
echo"sqrt(16)"| bc# 4(平方根)
#变量结合
r=5
echo"scale=2; 3.14159 *$r*$r"| bc# 78.53

bc逻辑运算

echo"3 > 5"| bc#输出:0(假)
echo"3 < 5"| bc#输出:1(真)
echo"10 == 10"| bc#输出:1(真)

6.变量类型与作用范围

自定义变量与环境变量

常见环境变量
echo$USER#当前用户名
echo$HOME#用户主目录
echo$PWD#当前工作目录
echo$SHELL#默认Shell
echo$LANG#系统语言
echo$RANDOM#随机数(0-32767
echo$UID#用户ID

只读变量

创建只读变量

readonly PI=3.14159

echo "只读变量 PI 的值是: $PI"

查看当前所有的只读变量readonly

位置变量

$0脚本名称(test.sh
$1第一个参数(张三)
$2第二个参数(123456
$3第三个参数
...
$#参数总数(2
$*所有参数(整体)
$@所有参数(独立)

就是运行脚本的时候 在后面加参数 未知变量会引用你写下的参数作为变量

#!/bin/bash
#创建用户脚本
#用法:bash user.sh用户名 密码
useradd$1
echo"$2"| passwd--stdin$1
#执行:bash user.sh zhangsan 123456

总结

shell脚本的基本结构和四种执行方式

基础的变量和各种变量的使用

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/19 13:44:31

Palworld存档编辑:如何用Python工具轻松解密和修改你的游戏数据

Palworld存档编辑&#xff1a;如何用Python工具轻松解密和修改你的游戏数据 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 在《幻兽帕鲁》的游戏…

作者头像 李华
网站建设 2026/7/19 13:43:54

Formsmd开发指南:从源码构建到贡献代码的完整路径

Formsmd开发指南&#xff1a;从源码构建到贡献代码的完整路径 【免费下载链接】formsmd Developer-first, open source Typeform alternative (formerly known as Blocks.md) 项目地址: https://gitcode.com/gh_mirrors/fo/formsmd Formsmd是一个开发者优先的开源Typefo…

作者头像 李华
网站建设 2026/7/19 13:43:01

5个实战技巧:用SGLang快速构建多模态AI应用

5个实战技巧&#xff1a;用SGLang快速构建多模态AI应用 【免费下载链接】sglang SGLang is a high-performance serving framework for large language models and multimodal models. 项目地址: https://gitcode.com/GitHub_Trending/sg/sglang SGLang作为一个高性能的…

作者头像 李华
网站建设 2026/7/19 13:42:50

Apache Commons Collections:Java开发者必备的终极集合工具库

Apache Commons Collections&#xff1a;Java开发者必备的终极集合工具库 【免费下载链接】commons-collections Apache Commons Collections 项目地址: https://gitcode.com/gh_mirrors/com/commons-collections Apache Commons Collections是Java开发者不可或缺的工具…

作者头像 李华