插件窝 干货文章 linux batch如何编写脚本

linux batch如何编写脚本

脚本 bash echo bin 174    来源:    2025-05-14

Linux Batch脚本编写指南

在Linux中,"batch"通常指的是批处理脚本,类似于Windows的.bat文件,但在Linux中我们使用Shell脚本(.sh文件)。以下是编写Linux批处理脚本的详细指南:

1. 基本脚本结构

#!/bin/bash
# 这是一个简单的批处理脚本示例

# 命令1
command1

# 命令2
command2

# 更多命令...

2. 创建和运行脚本的步骤

  1. 使用文本编辑器创建脚本文件:

    nano myscript.sh
    
  2. 添加脚本内容并保存

  3. 赋予执行权限:

    chmod +x myscript.sh
    
  4. 运行脚本:

    ./myscript.sh
    

3. 常用脚本元素

变量

#!/bin/bash
NAME="John"
echo "Hello, $NAME"

用户输入

#!/bin/bash
read -p "Enter your name: " NAME
echo "Hello, $NAME"

条件判断

#!/bin/bash
if [ "$1" == "start" ]; then
    echo "Starting..."
elif [ "$1" == "stop" ]; then
    echo "Stopping..."
else
    echo "Usage: $0 {start|stop}"
fi

循环

#!/bin/bash
# for循环
for i in {1..5}; do
    echo "Number: $i"
done

# while循环
COUNT=0
while [ $COUNT -lt 5 ]; do
    echo "Count: $COUNT"
    ((COUNT++))
done

函数

#!/bin/bash
function greet {
    echo "Hello, $1"
}

greet "World"

4. 实用脚本示例

备份脚本

#!/bin/bash
# 备份目录脚本
BACKUP_DIR="/backup"
SOURCE_DIR="/home/user/documents"
DATE=$(date +%Y-%m-%d)

tar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" "$SOURCE_DIR"
echo "Backup completed on $DATE"

系统监控脚本

#!/bin/bash
# 系统监控脚本
echo "System Report - $(date)"
echo "---------------------"
echo "CPU Load: $(uptime)"
echo "Memory Usage: $(free -m)"
echo "Disk Usage:"
df -h

批量处理文件

#!/bin/bash
# 批量重命名脚本
for file in *.txt; do
    mv "$file" "new_${file}"
done

5. 高级技巧

错误处理

#!/bin/bash
# 如果任何命令失败则退出
set -e

# 或捕获错误
command || { echo "command failed"; exit 1; }

日志记录

#!/bin/bash
LOG_FILE="script.log"
exec > >(tee -a "$LOG_FILE") 2>&1

参数处理

#!/bin/bash
while getopts ":a:b:" opt; do
  case $opt in
    a) arg1="$OPTARG" ;;
    b) arg2="$OPTARG" ;;
    \?) echo "Invalid option -$OPTARG" >&2 ;;
  esac
done

6. 调试脚本

  • 显示执行的命令:

    bash -x script.sh
    
  • 或在脚本中添加:

    set -x  # 开启调试
    # 脚本内容
    set +x  # 关闭调试
    

7. 注意事项

  1. 总是以#!/bin/bash(或其他解释器)开头
  2. 使用chmod +x赋予执行权限
  3. 变量赋值时等号两边不能有空格
  4. 使用双引号引用变量("$var")以防止空格问题
  5. 使用$(command)而不是反引号`command`

通过以上指南,您可以开始编写功能强大的Linux批处理脚本来自动化各种任务。