#!/bin/sh directory="hosts" echo "Known hosts:" folders=() counter=1 for folder in "$directory"/*/; do if [ -d "$folder" ]; then folder_name=$(basename "$folder") folders+=("$folder_name") echo "$counter: $folder_name" ((counter++)) fi done echo "Please select a host (number):" read -p "> " folder_number # Validate the selection if ! echo "$folder_number" | grep -Eq '^[1-9][0-9]*$'; then echo "Invalid selection: You must enter a positive integer." exit 1 fi folder_index=$((folder_number - 1)) if [ "$folder_index" -lt 0 ] || [ "$folder_index" -ge "${#folders[@]}" ]; then echo "Invalid selection: Number out of range." exit 1 fi selected_folder="${folders[$folder_index]}" selected_folder_path="$directory/$selected_folder" ln -sf "$selected_folder_path/configuration.nix" "configuration.nix" echo "Switched to host configuration in the current directory."