我搞砸了哪儿? CGI / BASH

时间:2014-12-10 20:15:55

标签: html bash cgi

我正在为这个学期的最后一个项目工作,并且没有丝毫错误,因为信息是从笔记中获取的。

#!/bin/bash

echo "inside formdemo.cgi" > /www/local.FoneBookSearch.com/cgilog
read information
echo "$information" > /www/local.FoneBookSearch.com/cgilog
firstname=`echo $information | cut -d '=' -f2 | cut -d '+' -f1`
lastname=`echo $information | cut -d '=' -f2 | cut -d '+' -f2`
search=`if(grep -iw "$firstname" phonebook || grep -iw "$lastname" phonebook)
then
echo "$search"
else
echo "That person was not found. Please try again"`

#construct a webpage
echo "Content-Type: text/html"
echo ""
echo "<html><head><title> Fone Book Search </title></head><body>"
echo "<h1> Search Results </h1>"
echo "<center> $search </center>"

我相信这对所有人来说都是微不足道的,但对我这样的人来说,这有点多了。我将花时间进行适当的研究,但是今天学期结束时我很好奇是否有人能告诉我哪里出了大错?

TextMate的错误代码:

formdemo.cgi: command substitution: line 17: syntax error: unexpected end of file
Content-Type: text/html

<html><head><title> Fone Book Search </title></head><body>
<h1> Search Results </h1>
<center>  </center>

1 个答案:

答案 0 :(得分:1)

您需要在以下行后面的if关闭fi语句:

echo "That person was not found. Please try again"`

此外,反引号在2014年被弃用,很难“发现”。

反引号(`)用于旧式命令替换。建议使用foo = $(命令)语法。 $()内的反斜杠处理不那么令人惊讶,$()更容易嵌套。见http://mywiki.wooledge.org/BashFAQ/082