Shell脚本是Linux系统中强大的自动化工具,下面我将介绍如何编写基本的Shell脚本以及一些实用技巧。
一个最简单的Shell脚本如下:
#!/bin/bash
# 这是一个注释
echo "Hello, World!"
#!/bin/bash
称为shebang,指定解释器#
开头的是注释echo
是输出命令vim myscript.sh
chmod +x myscript.sh
./myscript.sh
bash myscript.sh
name="John" # 定义变量
echo $name # 使用变量
echo ${name} # 推荐使用这种形式
readonly name # 设为只读
unset name # 删除变量
echo "Text" # 输出
printf "Name: %s\n" $name # 格式化输出
read -p "Enter your name: " username # 读取输入
if [ condition ]; then
commands
elif [ condition ]; then
commands
else
commands
fi
# for循环
for i in {1..5}; do
echo $i
done
# while循环
count=1
while [ $count -le 5 ]; do
echo $count
((count++))
done
# until循环
until [ $count -gt 10 ]; do
echo $count
((count++))
done
function greet() {
local name=$1 # 局部变量
echo "Hello, $name"
}
greet "Alice"
echo "脚本名: $0"
echo "第一个参数: $1"
echo "参数个数: $#"
echo "所有参数: $@"
echo "退出状态: $?"
fruits=("Apple" "Banana" "Cherry")
echo ${fruits[0]} # Apple
echo ${fruits[@]} # 所有元素
echo ${#fruits[@]} # 数组长度
if [ -f "file.txt" ]; then
echo "文件存在"
fi
if [ -d "dir" ]; then
echo "目录存在"
fi
#!/bin/bash
# 简单备份脚本
backup_dir="/backup"
source_dir="/home/user/documents"
date=$(date +%Y%m%d)
if [ ! -d "$backup_dir" ]; then
mkdir -p "$backup_dir"
fi
tar -czf "$backup_dir/backup_$date.tar.gz" "$source_dir"
if [ $? -eq 0 ]; then
echo "备份成功: $backup_dir/backup_$date.tar.gz"
else
echo "备份失败!" >&2
exit 1
fi
#!/bin/bash
# 系统监控脚本
echo "===== 系统信息 ====="
echo "主机名: $(hostname)"
echo "当前用户: $(whoami)"
echo "系统运行时间: $(uptime -p)"
echo "当前时间: $(date)"
echo -e "\n===== 磁盘使用 ====="
df -h | grep -v "tmpfs"
echo -e "\n===== 内存使用 ====="
free -h
echo -e "\n===== CPU使用率 ====="
top -bn1 | grep "Cpu(s)"
set -x
bash -n script.sh
bash -v script.sh
希望这个指南能帮助你开始编写Shell脚本!如果需要更具体的脚本示例或有任何问题,请随时提问。