如何在Bash中将用户输入读入变量?

时间:2013-08-31 04:03:08

标签: bash shell

我正在尝试创建一个简化在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

正如您所看到的,某些字段需要输入。如何在脚本中请求变量的输入?

4 个答案:

答案 0 :(得分:76)

使用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"

答案 1 :(得分:3)

是的,你会想做这样的事情:

echo -n "Enter Fullname: " 
read fullname

另一种选择是让他们在命令行上提供这些信息。 Getopts是你最好的选择。

Using getopts in bash shell script to get long and short command line options

答案 2 :(得分:2)

您也可以尝试zenity

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

答案 3 :(得分:1)

尝试一下

#/bin/bash

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