从0开始学习shell脚本
了解Shell和Shell脚本
Shell:Shell是一个命令解释器,用来执行用户输入的命令。常用的Shell包括Bash
、Zsh
、Ksh
等。Linux默认的Shell通常是Bash。
Shell脚本:Shell脚本是由一系列命令组成的文件,脚本可以运行一连串命令,达到自动化目的。
Shell脚本基础语法
创建并执行脚本
# 创建一个脚本文件
touch my_script.sh
chmod +x my_script.sh # 赋予执行权限
# 脚本文件内容
#!/bin/bash # 指定脚本解释器为bash
echo "Hello, World!" # 打印字符串
# 执行脚本
./my_script.sh
变量和常用运算符
# 定义变量(等号两边不能有空格)
name="Shell Scripting"
# 访问变量(前面需要加$)
echo "I am learning $name"
# 数字运算(使用expr)
num1=5
num2=3
sum=$(expr $num1 + $num2)
echo "The sum is $sum"
条件判断
# 数值比较
if [ $num1 -gt $num2 ]; then
echo "$num1 is greater than $num2"
fi
# 字符串比较
str1="hello"
str2="world"
if [ "$str1" != "$str2" ]; then
echo "$str1 is not equal to $str2"
fi
循环
# for 循环
for i in {1..5}; do
echo "Loop $i"
done
# while 循环
count=1
while [ $count -le 5 ]; do
echo "Count is $count"
count=$(expr $count + 1)
done
常用Shell命令
- 文件和目录管理:
ls
、cd
、mkdir
、rm
、mv
、cp
- 文本处理:
cat
、echo
、grep
、sed
、awk
- 进程管理:
ps
、top
、kill
- 文件权限:
chmod
、chown
Shell脚本中的进阶技术
函数
# 定义函数
my_function() {
echo "Hello from function"
}
# 调用函数
my_function
重定向和管道
# 将输出重定向到文件
echo "Hello" > output.txt # 覆盖写入
echo "World" >> output.txt # 追加写入
# 使用管道传递命令输出
cat file.txt | grep "text"
实践小项目
批量重命名文件
#!/bin/bash
# 把目录中的所有txt文件重命名为file_前缀
for file in *.txt; do
mv "$file" "file_$file"
done
监控磁盘使用情况
#!/bin/bash
# 检测根目录的磁盘使用情况
used=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
if [ $used -gt 80 ]; then
echo "Warning: Disk usage is over 80%"
fi