接受文件系统路径作为输入

当接受文件系统路径作为输入时,我们应该使用带有 -e 选项的 read,因为这允许用户使用 tab 来完成文件和目录名称。

read -e inputPath

然而,这还不够,因为用户还可能输入魔法变量,例如 $USER 变量,它将链接到用户的主目录。
简单地用期望值替换这些特殊情况并不总是足够的。

我们还得到了波浪号 (~) 字符的奇怪情况,它可以用作用户主目录的“快捷方式”。
但是,它也可以用于获取其他用户的主目录。

因此,我们应该注意正确解析用户提供的路径。

如何在 Bash 中读取用户输入

在 shell 脚本中,我们可能希望从用户那里读取输入,并根据输入的内容执行代码的条件执行。
其他时候,我们可能只想将输入提供给系统命令。

不管是什么情况,我们都可以使用 read 命令接受用户输入。
通过包含 -e 选项,我们甚至可以允许用户使用 TAB 键完成文件路径,就像他们正常使用终端时一样。

一个简短的示例脚本如下所示:

#!/bin/sh
printf "\n  Please type your username:\n\n"
read userName
if [ "$userName" = "" ]
then
  printf "\nYou did not provide a user name, you ass clown!\n\n"
else 
  printf "\n\nHallo $userName""\n\n"
fi
日期:2020-06-02 22:17:32 来源:oir作者:oir