Fix: subshell capture bug - interactive menus invisible in $()

- All UI output (echo, printf) in interactive functions now goes to stderr (>&2)
- Only return values go to stdout for $() capture
- Affected: select_quick_domain, select_port, select_category, select_template, show_template_preview
- Also fixed: log_*, confirm, select_option in common.sh
This commit is contained in:
anten-ka
2026-04-06 22:05:20 +03:00
parent 84bc15090a
commit cc3f547273
3 changed files with 52 additions and 52 deletions

View File

@@ -37,12 +37,12 @@ DIM='\033[2m'
NC='\033[0m'
# ── Логирование ──────────────────────────────────────────────────────────────
log_info() { echo -e " ${CYAN}${NC} $*"; }
log_success() { echo -e " ${GREEN}${NC} $*"; }
log_warning() { echo -e " ${YELLOW}${NC} $*"; }
log_error() { echo -e " ${RED}${NC} $*"; }
log_step() { echo -e "\n${BOLD}${WHITE} $*${NC}"; }
log_dim() { echo -e " ${DIM}$*${NC}"; }
log_info() { echo -e " ${CYAN}${NC} $*" >&2; }
log_success() { echo -e " ${GREEN}${NC} $*" >&2; }
log_warning() { echo -e " ${YELLOW}${NC} $*" >&2; }
log_error() { echo -e " ${RED}${NC} $*" >&2; }
log_step() { echo -e "\n${BOLD}${WHITE} $*${NC}" >&2; }
log_dim() { echo -e " ${DIM}$*${NC}" >&2; }
log_to_file() {
local ts; ts=$(date '+%Y-%m-%d %H:%M:%S')
@@ -409,7 +409,7 @@ migrate_v1_to_v2() {
# ── Подтверждение ────────────────────────────────────────────────────────────
confirm() {
local msg="${1:-Продолжить?}"
echo -ne " ${msg} [Y/n]: "
echo -ne " ${msg} [Y/n]: " >&2
read -r ans
[[ ! "$ans" =~ ^[Nn] ]]
}
@@ -420,16 +420,16 @@ select_option() {
shift
local options=("$@")
echo ""
echo -e " ${BOLD}${WHITE}${title}${NC}"
echo -e " ${DIM}$(printf '─%.0s' {1..50})${NC}"
echo "" >&2
echo -e " ${BOLD}${WHITE}${title}${NC}" >&2
echo -e " ${DIM}$(printf '─%.0s' {1..50})${NC}" >&2
local i=1
for opt in "${options[@]}"; do
echo -e " ${CYAN}${i})${NC} ${opt}"
echo -e " ${CYAN}${i})${NC} ${opt}" >&2
((i++))
done
echo -e " ${DIM}$(printf '─%.0s' {1..50})${NC}"
echo -ne " ${WHITE}Выбор:${NC} "
echo -e " ${DIM}$(printf '─%.0s' {1..50})${NC}" >&2
echo -ne " ${WHITE}Выбор:${NC} " >&2
read -r choice
echo "$choice"
}