"read"命令如何在 Bash 函数中工作



刚刚开始第一次使用bash(如果这是一个愚蠢的问题,请道歉(。

据我所知,read用于接收用户输入。然而,在下面的例子中,它似乎也被用来分配函数参数。

我是不是遗漏了什么?还有别的事吗?我发现很难找到关于它如何工作的文档。

如有任何帮助,将不胜感激

function server () {
while true
do
read method path version
if $method = 'GET'
then
echo 'HTTP/1.1 200 OK'
else
echo 'HTTP/1.1 400 Bad Request'
fi
done
}

在您的示例中,read命令用于将输入读取到3个不同的变量methodpathversion中。

如果用户输入行"my name is joe"作为输入,则methodpathversion的值为:

method  -> "my"
path    -> "name"
version -> "is joe"

但是,如果用户输入"hello world",则只有methodpath将包含字符串。具体而言:

method  -> "hello"
path    -> "world"
version ->

如果要使用read命令将输入读取到N变量(即read var1 var2 ... varN(中,则用户在命令行上的输入将由IFS变量中的字符分隔。事实上,IFS代表";输入字段分隔符";。

默认情况下,IFS变量等效于$' tn'。这意味着,除非另有规定,否则用户输入由空格、制表符或换行符分隔。

EDIT:IFS也通常被称为";内部字段分离器";正如David在评论中指出的那样(如果你从其他开发人员那里看到的话(。

最新更新