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

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

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



답변

사용 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"


답변

네, 다음과 같이하고 싶을 것입니다.

echo -n "Enter Fullname: "
read fullname

또 다른 옵션은 명령 줄에서이 정보를 제공하도록하는 것입니다. Getopts가 최선의 선택입니다.

bash 쉘 스크립트에서 getopts를 사용하여 길고 짧은 명령 줄 옵션 가져 오기


답변

또한 당신은 제 니티 를 시도 할 수 있습니다 !

user=$(zenity --entry --text 'Please enter the username:') || exit 1


답변

이 시도

#/bin/bash

read -p "Enter a word: " word
echo "You entered $word"


답변