사용자가 입력하면 문자열 “*”로 치환되서 보여지며 사용자가 Enter를 누를시에 입력한 문자열을 출력되게 코드를 작성해주세요.
#!/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
**을 통해 한 글자만 받고 바로 종료한다.
자동화 프로세스 과정에서 사용자의 시각적 편의를 위해 프로세스바와 스피커를 만들어주세요.
#!/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
}