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

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

fullname=""
# Now, read user input into the variable `fullname`.
235813 次浏览

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

echo -n "Enter Fullname: "
read fullname

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

在 bash shell 脚本中使用 getopts 获取长短命令行选项

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

也可以尝试 Zenity

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

试试这个

#/bin/bash


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

Https://www.gnu.org/software/bash/manual/html_node/bash-builtins.html

从标准输入或文件描述符中读取一行 Fd 作为-u 选项的参数提供,分解为单词,如下所示 第一个单词被分配到 第一个名字,第二个名字的第二个单词,等等 有更多的单词比名字,其余的单词和他们的 中间的分隔符被分配给姓。

echo "bash is awesome." | (read var1 var2; echo -e "Var1: $var1 \nVar2: $var2")

bash将是 var1
is awesome将是 var2
echo -e支持从 Ubuntu手册中解释反斜杠转义。


因此,完整的代码可以是:

echo -n "Enter Fullname: "
read fullname
echo "your full name is $fullname."
echo -n "test type more than 2 word: "
read var1 var2; echo -e
read var1 var2; echo -e "Var1: $var1 \nVar2: $var2")

最大可移植性(bash,zsh,...) :

printf "%s" "Enter fullname: "
read fullname

这是最便携的方式与提示读取。根据 shell 的不同,诸如 read -pecho -n之类的方法更有可能失败。