Read 명령어 사용법
Read 명령어 사용법
read
명령어는 리눅스에서 사용자 입력을 받아 변수에 저장하는 명령어입니다. 주로 쉘 스크립트에서 사용자와 상호작용하는 데 사용됩니다.
기본 사용법
read variable_name
예시:
#!/bin/bash
echo "Enter your name:"
read name
echo "Hello, $name!"
이 예시에서 사용자가 입력한 이름은 name
변수에 저장되고, 그 후 출력됩니다.
자주 사용하는 옵션
-p 옵션 (프롬프트 출력)
read -p "Enter your name: " name
echo "Hello, $name!"
-p
옵션을 사용하면 프롬프트 메시지와 입력을 한 줄에 표시할 수 있어 더 간결한 코드를 작성할 수 있습니다.
-s 옵션 (입력 숨김)
read -s -p "Enter your password: " password
echo
echo "Password is received."
-s
옵션은 비밀번호와 같은 민감한 정보를 입력받을 때 유용합니다. 입력 내용이 화면에 표시되지 않습니다.
-t 옵션 (시간 제한)
if read -t 5 -p "Enter your name within 5 seconds: " name; then
echo "Hello, $name!"
else
echo "Timed out."
fi
-t
옵션은 사용자 입력에 시간 제한을 둡니다. 이 예시에서는 5초 안에 입력하지 않으면 타임아웃 메시지가 출력됩니다.
-n 옵션 (문자 수 제한)
read -n 1 -p "Press any key to continue..."
echo
echo "Continuing..."
-n
옵션은 입력받을 문자의 개수를 제한합니다. 이 예시에서는 한 글자만 입력받고 즉시 다음 명령으로 넘어갑니다.
-r 옵션 (백슬래시 해석 방지)
read -r -p "Enter a file path: " filepath
echo "You entered: $filepath"
-r
옵션은 백슬래시($$를 이스케이프 문자로 해석하지 않게 합니다. 파일 경로와 같이 백슬래시를 포함할 수 있는 입력을 받을 때 유용합니다.
배열 입력 받기
#!/bin/bash
echo "Enter names separated by spaces:"
read -a names
echo "You entered:"
for name in "${names[@]}"; do
echo "$name"
done
-a
옵션을 사용하면 입력을 배열로 받을 수 있습니다. 이 예시에서는 공백으로 구분된 이름들을 입력받아 각각을 배열의 요소로 저장하고 출력합니다.
추가 팁
-
IFS 변수: 입력 필드 구분자(Input Field Separator)를 변경하여 다양한 구분자로 입력을 받을 수 있습니다.
IFS=':' read -p "Enter name:age:city: " name age city echo "Name: $name, Age: $age, City: $city"
-
여러 변수에 동시 입력: 한 번의 read 명령으로 여러 변수에 값을 할당할 수 있습니다.
read -p "Enter first name and last name: " first_name last_name echo "First Name: $first_name, Last Name: $last_name"
-
파일에서 읽기: read 명령어를 사용하여 파일의 내용을 한 줄씩 읽을 수 있습니다.
while read line; do echo "Line: $line" done < input.txt
이러한 다양한 옵션과 사용법을 조합하여 사용자와 상호작용하는 유연하고 강력한 쉘 스크립트를 작성할 수 있습니다.
참고 자료: