rc (abbreviazione di run commands) è l'interprete dei comandi per i sistemi operativi Unix Versione 10 e Plan 9 from Bell Labs. Somiglia alla Bourne shell, ma la sintassi è un po' più semplice.

È stato creato da Tom Duff, meglio noto per l'inusuale costrutto del linguaggio di programmazione C chiamato Duff's device.

Caratteristiche Rc usa delle strutture di controllo C-like invece di ALGOL-like, come quelle utilizzate dalla Bourne shell originale, eccetto che per l'utilizzo di un costrutto if not anziché else ed avere un ciclo for Bourne-like per scorrere le liste.

Su rc tutte le variabili sono liste di stringhe, cosa questa che elimina la necessità di costrutti come "$@".

Versioni Un port su Unix dell'rc originale è parte di Plan 9 from User Space. È disponibile anche una riscrittura di rc per sistemi operativi Unix-like fatta da Byron Rakitzi, che però ha richiesto modifiche tali da renderla incompatibile.

Esempi Per esempio, lo script per la shell Bourne

if test $1 = hello; then echo hello, world else case $2 in 1) echo $# 'hey' "jude's"$3;; 2) echo `date` :$*: :"$@":;; *) echo why not 1>&2 esac for i in a b c; do echo $i done fi

in rc si esprime con

if(~ $1 hello) echo hello, world if not { switch($2) { case 1 echo $#* 'hey' 'jude''s'^$3 case 2 echo `{date} :$"*: :$*: case * echo why not >[1=2]

for(i in a b c) echo $i }

Dato che if e if not sono due istruzioni differenti, in casi particolari queste hanno bisogno di essere raggruppate.

Rc supporta anche pipe più dinamiche:

a | b # mette in pipe lo standard error di a con b - Nella shell Bourne equivale a 1>&2 |b a <>b # apre b come lo standard input ed error di a a <{b} <{c} # diventa a {standard output di b} {standard output di c}

Voci correlate Shell (informatica) Linguaggio di scripting

Collegamenti esterni

"Rc - The Plan 9 Shell" - di Tom Duff

Plan 9 from User Space - Include rc e altri strumenti di Plan9 per Linux, Mac OS X e altri sistemi Unix-like.

werc - Un sistema per la gestione dei documenti per il web implementato completamente in rc.

Categoria:Unix Categoria:Linguaggi di scripting