E' giunto il momento di una domanda seria:
Indicate perché lo script seguente viene eseguito correttamente se /bin/sh è associato a BASH e non se invece è associato ad una shell strettamente conforme allo standard POSIX (per esempio dash).
#!/bin/sh
if [ $1 == 'Lug' ]; then
echo 'Beccato!'
exit 0
else
exit 1
fi
E già che ci siete:
Illustrate lo standard POSIX e i sistemi compatibili.
Vi ricordiamo che la classifica viene stabilita in base alla correttezza, completezza e rapidità della risposta.
Rispondete inviando un messaggio di posta elettronica.
Per questa domanda avete tempo fino a lunedì 11 alle ore 24:00.
La risposta corretta è:
- L'errore nello script è nell'operatore dei confronto all'interno del del test. Per lo standard POSIX l'uguaglianza è realizzata con l'operatore '=' e non con l'operatore '=='. Questa seconda versione, supportata da BASH, permette di distinguere il confronto dall'assegnazione e quindi di rendere il codice degli script più semplice da interpretare
- POSIX è uno standard (IEEE 1003) che raccoglie le API comuni ai sistemi operativi UNIX e UNIX-like e spesso viene confuso con lo stesso termine UNIX che invece identifica un certo numero di sitemi derivanti dal codice originale della AT&T
- Esistono diversi livelli di POSIX (1003.1, 1003.2 e 1003.3) che si occupano di aspetti diversi del sistema operativo. Per esempio 1003.3 riguarda le interfaccie per la creazione e la gestione dei thread. In Linux ne esiste una implementazione che va sotto il nome di pthread o POSIX thread
- Un programma che utilizza solo funzioni definite in POSIX può essere esguito su qualsiasi piattaforma compatibile senza modifiche al sorgente. Tra le piattaforme, oltre a quasi tutti i derivati di UNIX (compreso MacOSX), Linux e *VMS anche i sistemi operativi della famiglia Windows NT (NT, 2000, XP e Vista) attraverso l'apposita estensione che può essere trovata nel Resource Kit distribuito gratuitamente da Microsoft
- Lo script d'esempio (opportunamente corretto) può quindi essere eseguito senza modifiche su piattaforme WindowsNT
La classifica per questa domanda è la seguente:
- alexevil69[AT]gmail[DOT]com: 25
- daniele.athome[AT]gmail[DOT]com: 20