Skip to Content

Concorso LugRoma3: Domanda 9

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