← ClaudeAtlas

shell-scriptinglisted

Bash Shell 脚本编写
ryukyagamilight/terminal-skills · ★ 1 · AI & Automation · score 79
Install: claude install-skill ryukyagamilight/terminal-skills
# Shell 脚本编写 ## 概述 Bash 脚本编写、调试、最佳实践等技能。 ## 基础语法 ### 脚本结构 ```bash #!/bin/bash # 脚本描述 # Author: name # Date: 2024-01-01 set -euo pipefail # 严格模式 # 变量定义 VAR="value" readonly CONST="constant" # 主逻辑 main() { echo "Hello, World!" } main "$@" ``` ### 变量 ```bash # 定义变量 name="value" name='literal value' # 不解析变量 # 使用变量 echo $name echo ${name} echo "${name}_suffix" # 默认值 ${var:-default} # 未设置时使用默认值 ${var:=default} # 未设置时赋值并使用 ${var:+value} # 已设置时使用 value ${var:?error message} # 未设置时报错 # 字符串操作 ${#var} # 长度 ${var:0:5} # 子串 ${var#pattern} # 删除前缀 ${var%pattern} # 删除后缀 ${var/old/new} # 替换 ``` ### 数组 ```bash # 定义数组 arr=(a b c d) arr[0]="first" # 访问数组 ${arr[0]} # 第一个元素 ${arr[@]} # 所有元素 ${#arr[@]} # 数组长度 ${!arr[@]} # 所有索引 # 遍历数组 for item in "${arr[@]}"; do echo "$item" done ``` ## 流程控制 ### 条件判断 ```bash # if 语句 if [[ condition ]]; then commands elif [[ condition ]]; then commands else commands fi # 条件表达式 [[ -f file ]] # 文件存在 [[ -d dir ]] # 目录存在 [[ -z "$var" ]] # 变量为空 [[ -n "$var" ]] # 变量非空 [[ "$a" == "$b" ]] # 字符串相等 [[ "$a" != "$b" ]]