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.