#!/usr/bin/env bash set -euo pipefail # Script Name: nato # Description: Convert strings to NATO phonetic alphabet # Source: Inspired by https://evanhahn.com/scripts-i-wrote-that-i-use-all-the-time/ # Usage: nato bar # Output: Bravo Alfa Romeo # nato "hello 123" if [[ $# -eq 0 ]]; then echo "Usage: nato " >&2 exit 1 fi # NATO phonetic alphabet mapping declare -A nato_map=( [a]="Alfa" [b]="Bravo" [c]="Charlie" [d]="Delta" [e]="Echo" [f]="Foxtrot" [g]="Golf" [h]="Hotel" [i]="India" [j]="Juliett" [k]="Kilo" [l]="Lima" [m]="Mike" [n]="November" [o]="Oscar" [p]="Papa" [q]="Quebec" [r]="Romeo" [s]="Sierra" [t]="Tango" [u]="Uniform" [v]="Victor" [w]="Whiskey" [x]="Xray" [y]="Yankee" [z]="Zulu" [0]="Zero" [1]="One" [2]="Two" [3]="Three" [4]="Four" [5]="Five" [6]="Six" [7]="Seven" [8]="Eight" [9]="Niner" ) # Convert all arguments to lowercase and process each character input="$(echo "$*" | tr '[:upper:]' '[:lower:]')" result=() while IFS= read -r -n1 char; do # Skip empty characters [[ -z "$char" ]] && continue if [[ -n "${nato_map[$char]:-}" ]]; then result+=("${nato_map[$char]}") elif [[ "$char" == " " ]]; then result+=("/") # Use / as space separator fi done <<< "$input" # Output with spaces between words echo "${result[*]}"