Linux脚本以Shebang(#!/bin/bash)开头,指定解释器;变量无需声明类型,赋值时等号两侧无空格(如MY_VAR="value");引用变量需用$(如echo $MY_VAR)。命令输出可通过管道(|)连接(如ls -l | grep ".sh$"),实现数据流转。
PATH)和局部变量(小写,如my_var)。BACKUP_DIR而非bd),避免缩写歧义。${VAR}格式可明确变量边界(如${MY_VAR}_suffix),防止歧义。使用if语句实现分支逻辑,格式为:
if [ condition ]; then
# 条件成立时执行
elif [ condition ]; then
# 其他条件成立时执行
else
# 所有条件均不成立时执行
fi
常用条件判断:
[ -f "/path/to/file" ][ "$str1" = "$str2" ][ "$num1" -gt "$num2" ](大于)for file in $(ls); do
echo "$file"
done
count=1
while [ $count -le 5 ]; do
echo "Count: $count"
((count++))
done
将重复代码块封装为函数,提高复用性:
backup() {
local SOURCE=$1
local DEST=$2
rsync -av "$SOURCE" "$DEST"
echo "Backup completed from $SOURCE to $DEST"
}
# 调用函数
backup "/path/to/source" "/path/to/dest"
$?存储上一条命令的退出状态(0表示成功,非0表示失败)。command_to_execute
if [ $? -ne 0 ]; then
echo "Error: Command failed"
exit 1
fi
set -e:脚本遇到错误时立即退出,避免继续执行导致更严重问题。trap命令:捕获信号(如SIGINT、SIGTERM),执行清理操作(如删除临时文件)。trap 'echo "Script interrupted. Cleaning up..."; rm -f /tmp/temp_file; exit 1' SIGINT SIGTERM
echo "$(date): Error occurred" >> /var/log/script_error.log
set -x:打印执行的每一行命令及参数,跟踪脚本流程。set -x
# 脚本内容
set +x
bash -x:直接调试脚本(如bash -x my_script.sh)。$(<file)读取文件内容,而非cat file)。ls | grep "pattern",而非ls > temp && grep "pattern" temp)。files=("file1" "file2" "file3")
for file in "${files[@]}"; do
echo "$file"
done
${str//old/new})替代sed,提升效率。使用FetchLinux自动化安装、更新软件包,减少手动操作:
#!/bin/bash
# 更新所有软件包
sudo fetchlinux update
# 安装必要软件包(git、vim、curl)
sudo fetchlinux install git vim curl
# 清理缓存
sudo fetchlinux clean
赋予执行权限(chmod +x update_system.sh),可通过Cron定时执行(如每天凌晨2点)。
结合FetchLinux的rsync功能,实现增量备份:
#!/bin/bash
SOURCE_DIR="/path/to/source"
BACKUP_DIR="/backup/data"
# 创建备份目录
mkdir -p "$BACKUP_DIR"
# 增量备份(保留删除文件)
rsync -av --delete "$SOURCE_DIR" "$BACKUP_DIR/$(date +%Y%m%d)_backup"
# 记录日志
echo "Backup completed at $(date)" >> /var/log/fetchlinux-backup.log
通过Cron设置每天凌晨1点执行,确保数据安全。
使用FetchLinux实现本地与远程服务器的文件同步:
#!/bin/bash
REMOTE_USER="user"
REMOTE_HOST="remote.example.com"
REMOTE_DIR="/remote/path"
LOCAL_DIR="/local/path"
# 上传本地文件夹到远程
fetchlinux upload "$LOCAL_DIR" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR"
# 下载远程文件夹到本地
fetchlinux download "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR" "$LOCAL_DIR"
结合Cron定时执行(如每天凌晨3点),实现数据定期同步。
bash -n my_script.sh检查脚本语法是否正确。bash -x my_script.sh模拟执行,查看命令流程。chmod +x my_script.sh。crontab -e添加0 2 * * * /path/to/my_script.sh)。tail -f /var/log/script.log),确保任务正常运行。