うわー、この質問にタイトルを付ける良い方法は思い出されません。デフォルトでは、次のデータを含む「出席」というファイルがあります。
11/06/2014 101.11.001.01 FirstName LastName
11/06/2014 101.11.001.01 FirstName LastName
11/06/2014 101.11.001.01 FirstName LastName
11/06/2014 101.11.001.01 FirstName LastName
デフォルトでは、日付、IPアドレス、名前、姓です。上記は「出席」ファイルの形式です。ユーザーがA.)FN / LNを入力し、ログインした日付のリストを受け取るか、B.)日付を入力してリストを受け取るためのテキストボックスと送信ボタンを含むhtmlページを作成しました。その日付にログインしたユーザーの数。
目的の結果が得られましたが、ブラウザに表示されるgrepの結果は、次のようにすべて1行に表示されます。
11/06/2014 101.11.001.01 FirstName LastName 11/06/2014 101.11.001.01 FirstName LastName 11/06/2014 101.11.001.01 FirstName LastName 11/06/2014 101.11.001.01 FirstName LastName
明らかにこれは次善策です。別の行にgrepの結果を表示する必要があります。以下は私の.cgiファイルです。 「getvars」は、教授が変数の型を変換するために書いたスクリプトです。また、同じ城を持った人がいないので、城を探すだけでよい近道を選びました。
#!/bin/bash
. ~/bin/getvars
if [ ! -z "$LN" ]; then
cat attendance | grep $LN
elif [ ! -z "$DATE" ]; then
cat attendance | grep $DATE
else echo No Records Found
fi
できるだけ簡潔に作成しようと努力しており、理解できない内容についてお詫び申し上げます。私の唯一の質問は:他の行からgrepの結果をどのように取得できますか?
答え1
おそらく、ブラウザはユーザーが指すすべてのファイルをHTMLとして解釈します。 HTMLでは、改行文字は\n
タグではない<br>
ため、追加する必要があります。たとえば、
#!/usr/bin/env bash
. ~/bin/getvars
if [ ! -z "$LN" ]; then
grep "$LN" attendance | sed 's/$/<br>/'
elif [ ! -z "$DATE" ]; then
grep "$DATE" attendance | sed 's/$/<br>/'
else
echo No Records Found
fi
私のDebianで\n
ファイルに拡張子がない場合.html
(拡張子なしで試してみましたが.txt
)、Firefoxはそれを改行文字として解釈するので、これが回避策になるかもしれませんが、移植性がどれくらいになるのかわかりません。
<pre>
より良いオプションは、タグを使用し、<
すべておよび>
そのHTMLエントリを置き換えて適切なHTMLページを作成することです。
#!/usr/bin/env bash
. ~/bin/getvars
echo "<HTML><BODY><pre>"
if [ ! -z "$LN" ]; then
grep "$LN" attendance | sed 's/>/\>/g;s/</\</g;'
elif [ ! -z "$DATE" ]; then
grep "$DATE" attendance | sed 's/>/\>/g;s/</\</g;'
else
echo No Records Found
fi
echo "</pre></BODY></HTML>