Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.

Kodexempel: cgi-script med bash

Tråden skapades och har fått 3 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • International user
  • 2004-10-08 17:08

Skickar ett litet exempel på ett cgi-script som är skrivet i bash. Scriptet skriver ut $PATH och listar min hemkatalog med <pre> formaterad text:

#!/bin/bash

# http header block
echo "Server: Apache/1.3.29 (Darwin) Mac OS X Server"
echo "Cache-Control: no-cache"
echo "MIME-Version: 1.0"
# Raden nedan är egentliget det enda som behövs för en (minimal) http header
echo "Content-type: text/html"
echo "" # Den här tomraden måste skrivas ut för en korrekt http header

# html block
echo "<html><head><title>Test med bash cgi</title></head>"
echo "<body>"
echo "<pre>"
echo '$PATH='$PATH'<br>'
echo  `ls -l /Users/wire/ | awk '{print $0 "<br>"}'`
echo "</pre>"
 
echo "</body></html>"

Spara filen som t.ex. bash.cgi i mappen '/Library/WebServer/CGI-Executables/' som 'cgi-bin'-aliaset pekar på. Chmoda filen till 755. Aktivera tillåtelse för cgi-exekvering på Apache och kör. Detta gäller Mac OS X Server. Men det ska även gå att fixa till på Mac OS X Klient.

Senast redigerat 2004-10-08 17:28

I klientversionen är redan cgi-exekvering aktiverad för /Library/WebServer/CGI-Executables, så det ska normalt sett inte behövas någon extra konfigurering för den biten. Med cgi levereras alla data man behöver för att hantera förfrågningen (GET-variabler, POST-variabler, info om servern, etc.) i form av miljövariabler, så den biten är relativt lätthanterad.

Men cgi-skript skrivna i bash... blotta åsynen av ett ger mig ångestattacker

  • Medlem
  • International user
  • 2004-10-09 08:50
Ursprungligen av Samuel K:

Men cgi-skript skrivna i bash... blotta åsynen av ett ger mig ångestattacker

Om man redan kan sh/bash och inte kan Perl, ser jag inget problem med att skriva enkla cgi:er i sh/bash. Det fungerar ju riktigt bra!

Jag citerar dock mig själv från den här tråden:

Upptäckte att det går ju lika bra att skriva cgi:et med sh/bash (och naturligtvis Perl). Nu slipper jag lära mig Perl och cgi:et går mycket snabbare än AppleScript.

Fast Perl rular naturligtvis här. Men till mitt enkla cgi räcker sh/bash som jag redan kan

Ursprungligen av Wire:

Om man redan kan sh/bash och inte kan Perl, ser jag inget problem med att skriva enkla cgi:er i sh/bash. Det fungerar ju riktigt bra!

Självklart, och sh/bash har faktiskt sin nisch här i världen. Inget slår ju shellscript för just det shellscript är till för, nämligen att hantera filer och skyffla data mellan program. Men beträffande just cgi-skript tycker jag att citatet "when all you have is a hammer, everything looks like a nail" passar väldigt bra. Som sagt: bash har sina användningsområden, men cgi-skriptande är inte en av dem.

Citat:

Fast Perl rular naturligtvis här. Men till mitt enkla cgi räcker sh/bash som jag redan kan [/I]

Kan annars varmt rekommendera Ruby om du vill lära dig ett språk lika kraftfullt och användbart som Perl, men som är lättare att komma in i och producerar mindre kryptisk kod. Intet ont om Perl, jag kommer själv från Perl-hållet och tycker det är ett bra språk, men IMHO har Ruby alla Perls fördelar och nästan inga av nackdelarna. Så här ser ditt cgi-skript ut i rubyifierad form:

#!/usr/bin/env ruby
require 'cgi'
c = CGI.new
print c.header('Content-Type' => 'text/html')

# Hämta alla filer i hemkatalogen, och lägg till en
# radbrytning efter varje fil:
filer = Dir.entries("/Users/wire").map {|file| file + "<br />" }

print <<END
<html><head>Samma skript fast i Ruby</title>
<body>
<pre>
$PATH = #{ENV['PATH']} <br />
#{filer}
</pre>
</body></html>
END
1
Bevaka tråden