Bootstrap

从0开始学习shell脚本

了解Shell和Shell脚本

Shell:Shell是一个命令解释器,用来执行用户输入的命令。常用的Shell包括BashZshKsh等。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命令

  • 文件和目录管理lscdmkdirrmmvcp
  • 文本处理catechogrepsedawk
  • 进程管理pstopkill
  • 文件权限chmodchown

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

;