如果你还在用鼠标点来点去,那你可能还没体会到Shell脚本的魅力。Shell脚本就像是Linux世界的“魔法咒语”,只需几行代码,就能让系统乖乖听你的话。今天,我们从“Hello World”开始,一步步升级到“万能脚本大师”,让你在Linux的世界里呼风唤雨!
创建一个文件hello.sh
,输入以下内容:
#!/bin/bash
echo "Hello, World!"
说明:
#!/bin/bash
:指定脚本解释器为Bash。echo
:打印内容到终端。chmod +x hello.sh # 添加执行权限
./hello.sh # 运行脚本
输出:
Hello, World!
吐槽:别看这只是一个简单的Hello World
,但在脚本的世界里,它就是你的“第一次施法成功”!
name="Linux Wizard"
echo "Hello, $name!"
#!/bin/bash
echo "What's your name?"
read name
echo "Welcome, $name!"
说明:
read
:读取用户输入并保存到变量中。案例:我的脚本第一次学会“说话”时,差点把自己感动哭了!(好吧,其实是我自己哭的。)
if [ "$name" == "Linux Wizard" ]; then
echo "You are the master!"
else
echo "Nice to meet you, $name!"
fi
if [ -f "/etc/passwd" ]; then
echo "File exists!"
else
echo "File does not exist!"
fi
说明:
-f
:检查文件是否存在。-d
(目录)、-r
(可读)、-w
(可写)。吐槽:条件判断就像是脚本的“大脑”,没有它,你的脚本只能是一条直线,毫无灵魂!
for
循环for i in {1..5}; do
echo "Iteration $i"
done
while
循环count=0
while [ $count -lt 5 ]; do
echo "Count: $count"
count=$((count + 1))
done
说明:
$((...))
:执行算术运算。案例:我写了一个while
循环来监控服务器状态,结果忘了写终止条件,差点把自己电脑搞崩溃了!(教训:写循环一定要小心!)
greet() {
echo "Hello, $1!"
}
greet "Linux Wizard"
说明:
$1
:函数的第一个参数。add() {
return $(($1 + $2))
}
add 3 5
echo "Result: $?"
说明:
$?
:获取上一条命令的返回值。吐槽:函数就像是脚本的“积木”,有了它,你才能搭建出更复杂的“建筑”!
cat /etc/passwd | grep "root" > result.txt
说明:
|
:将前一个命令的输出作为后一个命令的输入。>
:将输出重定向到文件。if [[ "$email" =~ ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ ]]; then
echo "Valid email!"
else
echo "Invalid email!"
fi
说明:
=~
:匹配正则表达式。案例:我曾经用正则表达式写了一个邮箱验证脚本,结果发现自己的邮箱格式都不对!(尴尬到原地爆炸!)
使用-x
参数调试脚本:
bash -x script.sh
#!/bin/bash
backup_dir="/backup"
source_dir="/home/user"
timestamp=$(date +"%Y%m%d_%H%M%S")
mkdir -p $backup_dir
tar -czf "$backup_dir/backup_$timestamp.tar.gz" $source_dir
echo "Backup completed!"
说明:
tar
:压缩文件和目录。date
:获取当前时间。#!/bin/bash
while true; do
cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}')
echo "CPU Usage: $cpu_usage%"
sleep 5
done
说明:
top
:查看系统资源使用情况。sleep
:暂停脚本执行。吐槽:有了这些脚本,你不仅能当“万能脚本大师”,还能当“懒人福音”!
Shell脚本编程就像是Linux世界的“魔法”,掌握它,你就能让系统听从你的指挥。无论你是菜鸟还是高手,只要有耐心和热情,你一定能成为“万能脚本大师”!
互动环节:
快来评论区分享你的故事吧!
P.S. 如果觉得这篇博客对你有帮助,别忘了点赞、分享,并关注我的专栏,更多精彩内容等你来发现!