bash shell 语法(bash命令用法)
wptr33 2025-07-03 20:21 4 浏览
下面是**Shell(Bash)语法的常用知识点总结**,适合初学者和日常脚本编写参考。内容涵盖变量、判断、循环、函数、重定向、正则、数组等常见用法。
---
# Shell(Bash)语法速查总结
## 一、变量与赋值
```bash
name="World" # 赋值(等号两边不能有空格)
echo $name # 取变量值,推荐${name}防止歧义
num=123
```
## 二、命令替换
```bash
now=$(date) # 推荐用$()而不是反引号``
filename=$(ls | head -n 1)
```
## 三、算术运算
```bash
a=5; b=3
sum=$((a + b)) # 8
let c=a*b
((d=a-b))
```
## 四、字符串操作
```bash
str="hello world"
echo ${str:0:5} # hello, 字符串切片
echo ${#str} # 字符串长度
echo ${str/world/Bash} # 替换为hello Bash
```
## 五、数组
```bash
arr=(a b "c d")
echo ${arr[1]} # b
echo ${arr[@]} # 遍历所有元素
len=${#arr[@]} # 元素个数
```
## 六、条件判断
### 1. **文件判断**
```bash
[ -f file ] # 是否为普通文件
[ -d dir ] # 是否为目录
[ -e path ] # 文件或目录是否存在
[ -s file ] # 文件非空
```
### 2. **数值比较**
```bash
[ "$a" -eq "$b" ] # 等于
[ "$a" -ne "$b" ] # 不等于
[ "$a" -gt "$b" ] # 大于
[ "$a" -lt "$b" ] # 小于
```
### 3. **字符串比较**
```bash
[ "$a" = "$b" ] # 相等
[ "$a" != "$b" ] # 不等
[ -z "$a" ] # 字符串为空
[ -n "$a" ] # 字符串非空
```
### 4. **if语句**
```bash
if [ 条件 ]; then
# 代码
elif [ 其他条件 ]; then
# 其他
else
# 默认
fi
```
## 七、循环
### 1. **for循环**
```bash
for i in 1 2 3; do
echo $i
done
for file in *.txt; do
echo $file
done
```
### 2. **while循环**
```bash
count=0
while [ $count -lt 5 ]; do
echo $count
((count++))
done
```
### 3. **until循环**
```bash
until [ $count -ge 5 ]; do
echo $count
((count++))
done
```
## 八、函数
```bash
myfunc() {
echo "Hello $1"
}
myfunc Tom
```
## 九、读取输入
```bash
read var
read -p "请输入内容:" var
```
## 十、case语句(多分支)
```bash
read -p "输入y/n: " ans
case $ans in
y|Y) echo "yes";;
n|N) echo "no";;
*) echo "other";;
esac
```
## 十一、重定向与管道
```bash
ls > out.txt # 标准输出重定向
ls >> out.txt # 追加
cat file 2> err.log # 标准错误重定向
sort < file
ls | grep txt # 管道
```
## 十二、通配符与正则
- `*` :任意长度字符串
- `?` :单个任意字符
- `[abc]`:a或b或c
- `{a,b,c}`:a、b、c之一
正则可用于`grep`、`sed`、`awk`等
---
## 十三、参数处理
```bash
echo $0 # 脚本名
echo $1 # 第1个参数
echo $@ # 所有参数
echo $# # 参数个数
```
---
## 十四、退出与返回值
```bash
exit 0 # 正常退出
exit 1 # 异常退出
# 上一条命令的返回值:$?
```
---
## 十五、常用命令
- `ls`, `cp`, `mv`, `rm`, `find`, `grep`, `awk`, `sed`, `cut`, `sort`, `uniq`, `head`, `tail`
- `chmod`, `chown`, `touch`, `cat`, `echo`
---
## 十六、注释
```bash
# 这是注释
```
---
## 十七、特殊符号
- `&&` :前一命令成功才执行后一条
- `||` :前一命令失败才执行后一条
- `;` :无论前一命令成败都执行后一条
- `\` :续行
---
## 十八、调试
```bash
bash -x script.sh # 跟踪执行
set -x # 脚本内开启调试
set +x # 脚本内关闭调试
```
---
# 结语
掌握上面这些语法,你就可以编写和理解绝大多数常见 Shell 脚本,自动化日常任务和数据处理。
如需深入学习某一部分(如正则、数组、函数参数等),欢迎继续提问!
相关推荐
- 「网络安全」JAVA代码审计——XXE外部实体注入
-
一、WEB安全部分想要了解XXE,在那之前需要了解XML的相关基础二、XML基础...
- Web前端面试题目及答案汇总(web前端面试题最新)
-
Web前端面试题目及答案汇总来源:极客头条以下是收集一些面试中经常会遇到的经典面试题以及自己面试过程中无法解决的问题,通过对知识的整理以及经验的总结,重新巩固自身的前端基础知识,如有错误或更好的答案,...
- 什么是脚本文件?与可执行文件有什么不同?
-
今天的内容是脚本文件和可执行文件是两种不同类型的计算机文件,它们在结构和执行方式上有显著区别。脚本文件:定义与特性...
- 20个实用Python运维脚本(收藏级)(python 运维工具)
-
系统环境:支持Linux(Ubuntu/CentOS/Debian)和Windows...
- 2026年前每个开发者都应该学习的技能
-
优秀开发者...
- Linux 如何每 5、10、15 或 30 分钟运行一次 Cron 作业?
-
在Linux系统中,Cron是一个强大的工具,用于自动化重复性任务。通过合理配置...
- Shell脚本编程进阶实战:从入门到高效自动化
-
Shell脚本编程进阶实战:从入门到高效自动化一、参数处理进阶:打造专业级CLI工具1.高级参数解析示例...
- 在Bash中按分隔符拆分字符串的方法
-
技术背景在Bash脚本编程中,经常会遇到需要按特定分隔符拆分字符串的需求,例如处理CSV文件、解析日志等。掌握字符串拆分的方法对于数据处理和脚本自动化非常重要。...
- 程序员用5分钟,把一个400多MB的苹果安装包削掉了187MB
-
丰色发自凹非寺量子位|公众号QbitAI前些日子,一个...
- 如何在 Windows 上编写批处理脚本
-
你知道如何使用命令提示符吗?如果这样做,您可以编写一个批处理文件。在最简单的形式中,批处理文件(或批处理脚本)是双击文件时执行的几个命令的列表。批处理文件一直回到DOS,但仍然适用于现代版本的Win...
- 一文搞懂shell脚本(shell脚本应用实战)
-
一文搞懂shell脚本1、shell脚本介绍什么是shell脚本...
- 一文讲清ShellScript脚本编程知识
-
摘要:本文详尽地讲述了ShellScript的基础内容,还有它在Linux系统里的运用情况,涵盖了它的基本语法、常用的命令以及高级的功能。ShellScript可是一种简单又非常实用的编...
- 在Bash脚本中获取自身所在目录的方法
-
技术背景在使用Bash脚本时,有时需要获取脚本自身所在的目录。比如,当脚本作为另一个应用程序的启动器时,需要将工作目录更改为脚本所在的目录,以便对该目录中的文件进行操作。然而,由于脚本的调用方式多样(...
- shell中如何确定脚本的位置?这篇文章告诉你
-
我想从同一个位置读取一些配置文件,如何确定脚本的位置?。这个问题的出现主要是由两个原因引发的:一是您希望将脚本的数据或配置进行外部化,因此需要一种方式来寻找这些外部资源;二是您的脚本需要对某些捆绑资源...
- bash shell 语法(bash命令用法)
-
下面是**Shell(Bash)语法的常用知识点总结**,适合初学者和日常脚本编写参考。内容涵盖变量、判断、循环、函数、重定向、正则、数组等常见用法。---#Shell(Bash)语法速查总结...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
面试官:git pull是哪两个指令的组合?
-
git 执行pull错误如何撤销 git pull fail
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)