在Linux中,"batch"通常指的是批处理脚本,类似于Windows的.bat文件,但在Linux中我们使用Shell脚本(.sh文件)。以下是编写Linux批处理脚本的详细指南:
#!/bin/bash
# 这是一个简单的批处理脚本示例
# 命令1
command1
# 命令2
command2
# 更多命令...
使用文本编辑器创建脚本文件:
nano myscript.sh
添加脚本内容并保存
赋予执行权限:
chmod +x myscript.sh
运行脚本:
./myscript.sh
#!/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"
#!/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
#!/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
显示执行的命令:
bash -x script.sh
或在脚本中添加:
set -x # 开启调试
# 脚本内容
set +x # 关闭调试
#!/bin/bash
(或其他解释器)开头chmod +x
赋予执行权限$(command)
而不是反引号`command`
通过以上指南,您可以开始编写功能强大的Linux批处理脚本来自动化各种任务。