Rc: Difference between revisions

From Rosetta Code
Content added Content deleted
(UNIX Shell implementation)
m (add wikipedia link)
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{implementation|UNIX Shell}}'''rc''' is a simple yet powerful shell written by Tom Duff. Originally used on AT&T's Version 10 UNIX, it is now primarily used under [http://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs Plan 9], where it is the default shell. Despite rc's simplicity, it is powerful enough that many of Plan 9's basic utilities are written using it.
{{implementation|UNIX Shell}}[[wp:Rc|'''rc''']] is a simple yet powerful shell written by Tom Duff. Originally used on AT&T's Version 10 UNIX, it is now primarily used under [http://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs Plan 9], where it is the default shell. Despite rc's simplicity, it is powerful enough that many of Plan 9's basic utilities are written using it.


==Examples==
==Examples==
Here is a script to check the weather in a given city. (Retrieved from [http://plan9.bell-labs.com/sources/plan9/rc/bin/weather http://plan9.bell-labs.com/sources/plan9/rc/bin/weather])
Here is a script to check the weather in a given city. (Retrieved from [http://plan9.bell-labs.com/sources/plan9/rc/bin/weather http://plan9.bell-labs.com/sources/plan9/rc/bin/weather])


#!/bin/rc
<lang rc>#!/bin/rc
rfork e
rfork e
DEFAULT=ewr
DEFAULT=ewr
fn usage{
fn usage{
echo 'usage: weather 3-letter-city-code' >[1=2]
echo 'usage: weather 3-letter-city-code' >[1=2]
echo 'for a list of cities in new york, say' >[1=2]
echo 'for a list of cities in new york, say' >[1=2]
echo ' weather ny' >[1=2]
echo ' weather ny' >[1=2]
exit usage
exit usage
}
}
switch($#*){
switch($#*){
case 0
case 0
arg=$DEFAULT
arg=$DEFAULT
if(~ $#weather 1)
if(~ $#weather 1)
arg=$weather
arg=$weather
case 1
case 1
arg=$1
arg=$1
case *
case *
usage
usage
}
}
switch($arg){
switch($arg){
case [a-zA-Z][a-zA-Z][a-zA-Z]
case [a-zA-Z][a-zA-Z][a-zA-Z]
script=('' '' 'C' '4' '1' '1' $arg '' '' '' '' 'X')
script=('' '' 'C' '4' '1' '1' $arg '' '' '' '' 'X')
case [a-zA-Z][a-zA-Z]
case [a-zA-Z][a-zA-Z]
script=('' '' 'C' '4' '1' '3' $arg '' '' '' '' 'X')
script=('' '' 'C' '4' '1' '3' $arg '' '' '' '' 'X')
case *
case *
usage
usage
}
}
{
{
for(i in $script)
for(i in $script)
echo $i
echo $i
} |
} |
con -nrl tcp!rainmaker.wunderground.com!telnet |
con -nrl tcp!rainmaker.wunderground.com!telnet |
sed -n '/Enter .-letter .* code:/,/CITY FORECAST MENU/p' |
sed -n '/Enter .-letter .* code:/,/CITY FORECAST MENU/p' |
sed 's/Enter .-letter .* code: //' |
sed 's/Enter .-letter .* code: //' |
sed 's/ Press Return to continue, M to return to menu, X to exit: //' |
sed 's/ Press Return to continue, M to return to menu, X to exit: //' |
grep -v 'CITY FORECAST MENU' |
grep -v 'CITY FORECAST MENU' |
tr -d '
tr -d '
' |
' |
sed 's/ *$//' |
sed 's/ *$//' |
uniq
uniq</lang>

Latest revision as of 17:37, 30 August 2009

Rc is an implementation of UNIX Shell. Other implementations of UNIX Shell.

rc is a simple yet powerful shell written by Tom Duff. Originally used on AT&T's Version 10 UNIX, it is now primarily used under Plan 9, where it is the default shell. Despite rc's simplicity, it is powerful enough that many of Plan 9's basic utilities are written using it.

Examples

Here is a script to check the weather in a given city. (Retrieved from http://plan9.bell-labs.com/sources/plan9/rc/bin/weather)

<lang rc>#!/bin/rc rfork e DEFAULT=ewr fn usage{ echo 'usage: weather 3-letter-city-code' >[1=2] echo 'for a list of cities in new york, say' >[1=2] echo ' weather ny' >[1=2] exit usage } switch($#*){ case 0 arg=$DEFAULT if(~ $#weather 1) arg=$weather case 1 arg=$1 case * usage } switch($arg){ case [a-zA-Z][a-zA-Z][a-zA-Z] script=( 'C' '4' '1' '1' $arg 'X') case [a-zA-Z][a-zA-Z] script=( 'C' '4' '1' '3' $arg 'X') case * usage } { for(i in $script) echo $i } | con -nrl tcp!rainmaker.wunderground.com!telnet | sed -n '/Enter .-letter .* code:/,/CITY FORECAST MENU/p' | sed 's/Enter .-letter .* code: //' | sed 's/ Press Return to continue, M to return to menu, X to exit: //' | grep -v 'CITY FORECAST MENU' | tr -d ' ' | sed 's/ *$//' | uniq</lang>