BASH
Managing Temporary Files and Directories
Securely create and manage temporary files or directories in Bash scripts, ensuring proper cleanup on exit for clean and robust automation.
#!/bin/bash
# Create a unique temporary directory
TEMP_DIR=$(mktemp -d -t mytempdir.XXXXXXXXXX)
if [[ ! -d "$TEMP_DIR" ]]; then
echo "Failed to create temporary directory." >&2
exit 1
fi
# Ensure the temporary directory is removed on exit
# irrespective of how the script terminates (success, error, Ctrl+C)
trap "rm -rf '$TEMP_DIR'" EXIT
echo "Working in temporary directory: $TEMP_DIR"
# Example: Create a temporary file inside the temp directory
TEMP_FILE="$TEMP_DIR/data.tmp"
echo "Hello World" > "$TEMP_FILE"
echo "Temporary file created: $TEMP_FILE"
cat "$TEMP_FILE"
# Simulate some work
sleep 2
echo "Script finished. Temporary directory and its contents will be removed."
How it works: This snippet illustrates the best practice for managing temporary files and directories in Bash. It uses `mktemp -d` to create a uniquely named temporary directory, preventing naming collisions. The critical part is the `trap` command, which registers a function (in this case, `rm -rf '$TEMP_DIR'`) to be executed automatically when the script exits, regardless of whether it exits normally, due to an error, or is terminated by a signal like Ctrl+C. This ensures that no leftover temporary files or directories clutter the system, promoting clean and reliable script execution.