Bash에서 사용자 입력을 변수로 읽는 방법은 무엇입니까?


83

iOS 장치에서 새 사용자를 만드는 과정을 단순화하는 스크립트를 만들려고합니다. 다음은 세분화 된 단계입니다.

# fullname="USER INPUT"
# user="USER INPUT"
# group=$user
# uid=1000
# gid=1000
# home=/var/$user
# echo "$group:*:$gid:$user" >>          /private/etc/group
# echo     "$user::$uid:$gid::0:0:$fullname:$home:/bin/sh" >> /private/etc/master.passwd
# passwd $user
# mkdir $home
# chown $user:$group $home

보시다시피 일부 필드에는 입력이 필요합니다. 스크립트에서 변수에 대한 입력을 요청하려면 어떻게해야합니까?

답변:


171

사용 read -p:

# fullname="USER INPUT"
read -p "Enter fullname: " fullname
# user="USER INPUT"
read -p "Enter user: " user

확인하려는 경우 :

read -p "Continue? (Y/N): " confirm && [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]] || exit 1

또한 경로 이름 확장 및 공백으로 단어 분할을 방지하기 위해 변수를 인용해야합니다.

# passwd "$user"
# mkdir "$home"
# chown "$user:$group" "$home"

7
사용할 수 있습니다 ${confirm^^} == 'YES'.
Aleks-Daniel Jakimenko-A.

1
@ Aleks-DanielJakimenko 다른 사람들이 사용하는 일반적인 방법이지만 4.0+ 와만 호환됩니다.
konsolebox 2013-08-31

참고로 : exit 1오류가있는 종료를 의미합니다.
Timo



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.