惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Cloudflare Blog
U
Unit 42
F
Fortinet All Blogs
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
Y
Y Combinator Blog
罗磊的独立博客
V
Visual Studio Blog
大猫的无限游戏
大猫的无限游戏
J
Java Code Geeks
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
爱范儿
爱范儿
B
Blog RSS Feed
aimingoo的专栏
aimingoo的专栏
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
Microsoft Security Blog
Microsoft Security Blog
L
LangChain Blog
I
InfoQ
博客园 - 叶小钗
博客园 - 聂微东
Last Week in AI
Last Week in AI

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Bash Script Guide
AtomicWave88 · 2026-06-21 · via DEV Community

AtomicWave88

1. Shebang 是什么?

告诉系统:这个文件应该由谁解释执行

Bash 脚本以 shebang 开头。Shebang 是 bash # 和 bang ! 的组合,后跟 bash shell 路径。这是脚本的第一行。Shebang 告诉 shell 通过 bash shell 执行它。Shebang 指向 bash 解释器的绝对路径。

#!/bin/bash

查看bash位置:

which bash

set -e 出故障立即跳出脚本

#!/bin/bash
set -e

2. 变量

bash的变量

  1. 区分大小写;
  2. 不能含有"_", "-"符号
# 正确
name=Alex
# 错误
name = Alex

# 使用
echo $name
newName=$name

3. 输入与输出

收集输入

read 等同 cin

#!/bin/bash 

# 1. 读取用户输入并将其存储在变量中
echo "What's your name?" 
read entered_name 
echo -e "\nWelcome to bash tutorial" $entered_name

# 2. 从文件读取, 读取input.txt中的每一行
while read line
do
  echo $line
done < input.txt

# 3. 命令行参数
## greating.sh
#!/bin/bash
echo "Hello, $1, $2, $3!"
## 在terminal中输入 ./greating.sh Alex Bob Coco, 替代123参数,输出
Hello, Alex, Bob, Coco

显示输出

# 1. printout to terminal
echo "Hello, World!" 

# 2. 覆盖写入文件
echo "Hello, World!" > file.md
# 3. 追加写入文件
echo "Hello, World!" >> file.md

# 4. 重定向输出
ls > files.txt

012描述符,错误输出

Linux 中每个程序启动时,系统都会给它打开 3 个默认文件描述符(File Descriptor)。

编号 名称 简写 默认位置
0 Standard Input stdin 键盘
1 Standard Output stdout 终端
2 Standard Error stderr 终端
# 错误输出
program 2> error.log
# 标准输出+错误输出,都写入log.txt
program > log.txt 2>&1


命令 标准输出(stdout)去向 标准错误(stderr)去向 实际应用场景
program > log.txt 2>&1 log.txt log.txt 需要收集所有运行日志(包括报错信息)到一个文件中。
program 2>&1 > log.txt log.txt 屏幕(终端) 只想把正常输出存盘,而把错误信息实时打印在屏幕上以便排查。

4. 条件判断if/else, switch/case

if else

Bash 含义
-eq ==
-ne !=
-gt >
-lt <
-ge >=
-le <=
if [[ condition ]]; then
    statement
elif [[ condition ]]; then
    statement 
else
    do this by default
fi

# -a = AND, -o = OR
if [ $a -gt 60 -a $b -lt 100 ]

switch case

fruit="apple"

case $fruit in
    "apple")
        echo "This is a red fruit."
        ;;
    "banana")
        echo "This is a yellow fruit."
        ;;
    "orange")
        echo "This is an orange fruit."
        ;;
    *)
        echo "Unknown fruit."
        ;;
esac

5. 循环Loop

while

i=1

while [ $i -le 5 ]
do
    echo $i
    ((i++))
done

for

for i in {1..5}
do
    echo $i
done


6. 使用 cron 定时运行脚本

# 查看所有定时脚本
crontab -l
# edit定时脚本
crontab -e
# * 代表分别的分钟、小时、日、月、周几
* * * * * sh /path/to/script.sh

安排 描述 示例
0 0 * * * 每天午夜运行一个脚本 0 0 * * * /path/to/script.sh
*/5 * * * * 每 5 分钟运行一个脚本 */5 * * * * /path/to/script.sh
0 6 * * 1-5 从星期一到星期五每天早上 6 点运行一个脚本 0 6 * * 1-5 /path/to/script.sh
0 0 1-7 * * 每个月的前 7 天运行一个脚本 0 0 1-7 * * /path/to/script.sh
0 12 1 * * 每个月的第一天中午 12 点运行一个脚本 0 12 1 * * /path/to/script.sh

Resource

  1. Bash 脚本教程——Linux Shell 脚本和命令行入门教程