bash是用于自动处理和批处理的脚本语言,通常运行在Linux和MacOs系统中。
一、基础脚本结构
#!/bin/bash
# 这是一个注释
echo "Hello World!" # 输出文本
- #!bin/bash 为shebang, 指定解释器路径
- 保存为.sh文件(如myscript.sh)
- 赋予执行权限: chomd + x myscript.sh
- 运行脚本: ./myscript.sh
二、变量操作
name = "jack"
echo "Hello $name" #输出变量, 双引号允许变量拓展
echo "Time: $(date)" #命令替换
三、输入输出
read -p "Enter your name:" username #读取用户输入
echo "welcome $username"
# 重定向示例
echo "Log message" > log.txt #覆盖写入文件
echo "Another line" >> log.txt #追加写入文件
四、 条件判断
if [ $num -gt 10]; then
echo "Greater than 10"
elif [ $num -eq 10]; then
echo "Equal to 10"; then
else
echo "Less than 10"
fi
# 常用比较符:
# -eq(等于), -ne(不等于)
# -gt(大于), -lt(小于)
# -ge(大于等于), -le(小于等于)
# -d(是目录), -f(是文件)
五、循环
for循环
for i in {1..5}; do
echo "Number is: $i"
done
# 遍历文件
for file in *.txt; do
echo "Processing $file"
done
# 遍历创建并写入文件
for i in {2..5};do
touch "$i.txt"
echo "num is:$i" > "$i.txt"
done
while循环
count=1
while [ $count -le 5 ]; do
echo "Count is: $count"
((count++))
done
六、函数
function sum () {
local a=$1
local b=$2
local sum=$((a+b))
echo "Sum of $1 and $2 is: $sum"
}
sum 5 10
七、参数处理
脚本可以通过$1,$2...获取参数:
echo "Script Name: $0"
echo "First argument: $1" # 获取第一个参数
echo "Second argument: $2" # 获取第二个参数
echo "All arguments: $@" # 获取全部参数
echo "Length of args: $#" # 获取参数长度
示例:
运行./myscript.sh apple banana
输出:
/f/d.sh apple banana
Script Name: /f/script.sh
First argument: apple
Second argument: banana
All arguments: apple banana
Length of args: 2
八、错误处理
set e #遇到错误立即退出
set -o pipefail #管道命令中任意失败则整体失败
# 检查命令是否存在
if ! command -v git &> /dev/null; then
echo "Error: git is not installed"
exit 1
fi
九、实用示例
批量重命名文件
for file in *.jpg; do
mv "$file" "photo_${file}"
done
备份目录
backup_dir="/backup/$(date +%Y%m%d)"
mkdir -p "$backup_dir"
cp -r /data/* "$backup_dir"
十、学习资源
- 官方文档: man bash手册
- 在线教程: linuxconfig.org/bash-script…