Linux Shell 编程基础

Shell 是 Linux 系统的命令行解释器,用于执行用户输入的命令或脚本。Shell 编程是通过编写脚本文件(通常以 .sh 结尾)来自动化任务。

常见 Shell 类型

  • bash(Bourne Again Shell):Linux 默认 Shell,功能丰富。
  • sh(Bourne Shell):早期标准 Shell。
  • zshksh 等:扩展功能更强的 Shell。

脚本编写与执行

脚本文件结构
脚本通常以 #!/bin/bash(Shebang)开头,指定解释器路径。例如:

#!/bin/bash
echo "Hello, World!"

执行脚本的权限
需为脚本添加可执行权限:

chmod +x script.sh

运行脚本

  • 直接执行(需可执行权限):
    ./script.sh
    

  • 通过解释器运行(无需权限):
    bash script.sh
    


变量与数据类型

变量定义与使用
变量名区分大小写,无需声明类型:

name="Alice"
age=30
echo "Name: $name, Age: $age"

环境变量
系统预定义的变量(如 $PATH),可通过 export 导出为环境变量:

export MY_VAR="value"

特殊变量

  • $0:脚本名称。
  • $1, $2...:脚本参数。
  • $#:参数个数。
  • $?:上一条命令的退出状态。

控制结构

条件判断
使用 ifcase 语句:

if [ "$age" -ge 18 ]; then
    echo "Adult"
else
    echo "Child"
fi

循环结构

  • for 循环:
    for i in {1..5}; do
        echo "Number: $i"
    done
    

  • while 循环:
    count=0
    while [ $count -lt 3 ]; do
        echo "Count: $count"
        ((count++))
    done
    


函数与模块化

定义函数

greet() {
    echo "Hello, $1!"
}
greet "Bob"

返回值
函数通过 return 返回状态码(0 表示成功),或通过 echo 输出结果:

add() {
    echo $(($1 + $2))
}
result=$(add 3 5)


文件与输入输出

文件操作

  • 读取文件:
    while read line; do
        echo "Line: $line"
    done < file.txt
    

  • 写入文件:
    echo "Content" > output.txt  # 覆盖
    echo "More" >> output.txt    # 追加
    

重定向

  • >:覆盖输出。
  • >>:追加输出。
  • 2>:重定向错误输出。

调试与错误处理

调试脚本
使用 -x 选项打印执行过程:

bash -x script.sh

错误处理

  • set -e:脚本遇到错误立即退出。
  • trap 捕获信号:
    trap "echo 'Error occurred'; exit 1" ERR
    


常用工具与命令

文本处理

  • grep:搜索文本。
  • sed:流编辑器。
  • awk:文本分析工具。

算术运算

  • expr:整数运算。
  • bc:浮点运算:
    echo "scale=2; 5/3" | bc
    


实际应用示例

备份脚本

#!/bin/bash
backup_dir="/backup"
tar -czf "$backup_dir/backup_$(date +%Y%m%d).tar.gz" /path/to/data

定时任务
通过 crontab 定期执行脚本:

0 2 * * * /path/to/backup.sh

通过掌握以上内容,可以高效编写 Shell 脚本实现自动化任务。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐