¿Cómo leer la entrada del usuario en una variable en Bash?


83

Estoy intentando crear un script que simplifique el proceso de creación de un nuevo usuario en un dispositivo iOS. Aquí están los pasos desglosados.

# 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

Como puede ver, algunos campos requieren entrada. ¿Cómo puedo solicitar la entrada de una variable en un script?

Respuestas:


171

Utilizar read -p:

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

Si quieres confirmar:

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

También debe citar sus variables para evitar la expansión del nombre de ruta y la división de palabras con espacios:

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

7
Puede utilizar ${confirm^^} == 'YES'.
Aleks-Daniel Jakimenko-A.

1
@ Aleks-DanielJakimenko Ese es un método habitual que usan otras personas, pero solo es compatible con 4.0+.
konsolebox

Como nota al margen: exit 1significa salir con error.
Timo



1

Prueba esto

#/bin/bash

read -p "Enter a word: " word
echo "You entered $word"
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.