Bash-Skript portabel und safe
Härtet ein Bash-Skript - strict mode, Fehlerpfade, Quoting, Portabilitäts-Fallen (macOS vs GNU).
Zuletzt geprüft 23. April 2026
Prompt
Harden this bash script. Make it robust and portable.
Checks:
1. STRICT MODE - `set -euo pipefail` where appropriate; IFS setting
2. QUOTING - every variable expansion quoted ("$var" not $var) unless array context
3. ERROR PATHS - commands that can fail silently (mkdir, rm, cd) handled
4. PORTABILITY - GNU vs BSD differences flagged:
- `sed -i` behaves differently on macOS
- `readlink -f` missing on macOS by default
- `grep -P` not everywhere
- `find -printf` GNU-only
5. ARG PARSING - if nontrivial, getopts or explicit loop
6. TEMP FILES - `mktemp` with trap for cleanup
7. CONCURRENCY - if launched in parallel, PID files / flock
8. EXIT CODES - meaningful, not just 0/1
Output:
1. ISSUES FOUND - list with line numbers
2. REWRITTEN SCRIPT - applying the fixes. Inline comments where behavior changed.
3. SHELLCHECK NOTE - which shellcheck codes this would trigger
Rules:
- Do not rewrite style where behavior is correct
- Do not convert to Python/other
- If the script should NOT be strict (e.g., part of a login .rc), say so
- Keep the original structure where safe
Script:
[PASTE]
Target platforms: [LINUX / MACOS / BOTH / ALPINE]
Wann nutzen
Für Skripte, die in CI und auf Entwickler-Macs laufen müssen. Portabilitäts-Fehler explodieren genau dort.
Use-Cases
- Setup/Install-Script für ein Repo.
- Ops-Skript, das in Ubuntu-CI und macOS-Dev läuft.
- Legacy-Skript ohne `set -e`, das zu oft still scheitert.
Getestet mit
Laufe shellcheck separat gegen das Ergebnis - das Modell findet Strukturprobleme, shellcheck die Mikrofallen.