Overview
Bash is the most widely used shell on Linux systems. However, writing robust, production-ready bash scripts requires strict error handling, environment isolation, and safety checks. This generator enforces enterprise standards like set -euo pipefail and traps.
Best Practices for Production
- Always use double quotes: Unquoted variables can cause word splitting and globbing, leading to dangerous bugs.
- Validate input: Never trust user arguments or environment variables. Provide a fallback or exit if they are missing.
- Wrap in main(): Putting your logic inside a `main()` function prevents variable leakage into the global scope.
- Use ShellCheck: Always run your scripts through `shellcheck` before deploying to production.
Common Mistakes
rm -rf $DIR/: If $DIR is unset, this becomes `rm -rf /`, wiping the entire server. Always quote and check variables, or enable `set -u`.
Bashisms in /bin/sh: If your shebang is `#!/bin/sh`, you cannot use Bash arrays or `[[ ]]`. Always use `#!/usr/bin/env bash` for Bash scripts.
Frequently Asked Questions
What does set -euo pipefail do?
Also known as 'Bash Strict Mode'. -e exits immediately if a command fails. -u exits if an unset variable is used. -o pipefail catches errors within piped commands (e.g., if a fails in a | b).
Why should I use a trap?
A trap executes a function when the script exits, whether it succeeds, fails, or is interrupted (like with Ctrl+C). It's crucial for cleaning up temporary files or releasing lock files.
Why shouldn't I run curl | bash?
Piping a script directly from the internet to bash means you have no chance to inspect it. If the connection drops halfway, bash will execute a partial, potentially destructive script.