bash语法

300 阅读1分钟

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"

十、学习资源