如何将用户输入读入 Bash 中的变量?
fullname="" # Now, read user input into the variable `fullname`.
是的,你会想做这样的事情:
echo -n "Enter Fullname: " read fullname
另一种选择是让他们在命令行上提供这些信息。Getopts 是你最好的选择。
在 bash shell 脚本中使用 getopts 获取长短命令行选项
使用 read -p:
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手册中解释反斜杠转义。
bash
is awesome
echo -e
因此,完整的代码可以是:
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")
printf "%s" "Enter fullname: " read fullname
这是最便携的方式与提示读取。根据 shell 的不同,诸如 read -p和 echo -n之类的方法更有可能失败。
echo -n