문제1

사용자가 입력하면 문자열 “*”로 치환되서 보여지며 사용자가 Enter를 누를시에 입력한 문자열을 출력되게 코드를 작성해주세요.

Termius-Ubuntuhyprland2025-01-1717-47-26-ezgif.com-video-to-gif-converter.gif

#!/bin/bash

input=""

while IFS= read -r -s -n1 char
do	
	if [[ $char == "" ]]; then
		break
	fi
	
	input+="$char"
	echo -n "*"
done

echo
echo "Your input is : ${input}"

read 통해 char에 입력값을 받습니다.

**IFS**를 통해 공백도 정상적으로 읽도록 만든다.

**-r**을 통해 \를 특별한 문자로 처리하지 않고 그대로 읽는다.

**-s**를 통해 입력값을 보여주지 않는다.

**-n1**을 통해 한 글자만 받고 바로 종료한다.

문제2

자동화 프로세스 과정에서 사용자의 시각적 편의를 위해 프로세스바와 스피커를 만들어주세요.

Termius-Ubuntuhyprland2025-01-1717-47-26-ezgif.com-video-to-gif-converter (1).gif

#!/usr/bin/env bash

source "$(pwd)/nabiiner.sh"

_start_dot() {
  SPINNY_FRAMES=(".     " "..    " "...   " "....  " "..... " "....  " "...   " "..    " ".     ")
  SPINNY_DELAY=0.1
  echo "This is spinner"
  nabiiner::start
  sleep 6
  nabiiner::stop
  echo
}

_start_clock() {
  SPINNY_FRAMES=("🕐 " "🕑 " "🕒 " "🕓 " "🕔 " "🕕 " "🕖 " "🕗 " "🕘 " "🕙 " "🕚 " "🕛 ")
  SPINNY_DELAY=0.1
  echo "This is Clock..."
  nabiiner::start
  sleep 3
  nabiiner::stop
  echo
}

_start_dot
_start_clock
#!/usr/bin/env bash
SPINNER_PID=""
nabiiner::start() {
  (
    while true; do
      for frame in "${SPINNY_FRAMES[@]}"; do
        printf "\\r%s" "$frame"
        sleep "${SPINNY_DELAY:-0.1}"
      done
    done
  ) &
  SPINNER_PID=$!
}
nabiiner::stop() {
  if [[ -n $SPINNER_PID ]]; then
    kill "$SPINNER_PID" &>/dev/null
    wait "$SPINNER_PID" 2>/dev/null
    printf "\\r"
  fi
}