-
Notifications
You must be signed in to change notification settings - Fork 2
/
curse.sh
executable file
·74 lines (67 loc) · 3.27 KB
/
curse.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/bin/bash
##############################################################################
# Shakespearian Curse Generator -- Based on lists compiled by Jerry Maguire, #
# English teacher at Center Grove High School in Greenwood, Indiana. #
# Public domain implementations by Trevor Stone http://trevorstone.org/curse #
##############################################################################
# Define arrays of words
adjective1=(artless bawdy beslubbering bootless brazen churlish cockered \
clouted craven currish dankish dissembling distempered droning errant \
fawning fitful fobbing froward frothy gleeking gnarling goatish gorbellied \
greasy grizzled haughty hideous impertinent infectious jaded jarring knavish \
lewd loggerheaded lumpish mammering mangled mewling paunchy peevish \
pernicious prating pribbling puking puny purpled quailing queasy rank reeky \
roguish roynish ruttish saucy sottish spleeny spongy surly tottering \
unmuzzled vacant vain venomed villainous waggish wanton warped wayward weedy \
wenching whoreson yeasty)
adjective2=(base-court bat-fowling beef-witted beetle-headed boil-brained \
bunched-backed clapper-clawed clay-brained common-kissing crook-pated \
dismal-dreaming dizzy-eyed dog-hearted dread-bolted earth-vexing elf-skinned \
empty-hearted evil-eyed eye-offending fat-kidneyed fen-sucked flap-mouthed \
fly-bitten folly-fallen fool-born full-gorged guts-griping half-faced \
hasty-witted heavy-handed hedge-born hell-hated horn-mad idle-headed \
ill-breeding ill-composed ill-nurtured iron-witted knotty-pated lean-witted \
lily-livered mad-bread milk-livered motley-minded muddy-mettled onion-eyed \
pale-hearted paper-faced pinch-spotted plume-plucked pottle-deep pox-marked \
raw-boned reeling-ripe rough-hewn rude-growing rug-headed rump-fed \
shag-eared shard-borne sheep-biting shrill-gorged spur-galled sour-faced \
swag-bellied tardy-gaited tickle-brained toad-spotted unchin-snouted \
weak-hinged weather-bitten white-livered)
noun=(apple-john baggage barnacle bladder boar-pig bugbear bum-bailey \
canker-blossom clack-dish clotpole coxcomb codpiece crutch cutpurse \
death-token dewberry dogfish egg-shell flap-dragon flax-wench flirt-gill \
foot-licker fustilarian giglet gudgeon gull-catcher haggard harpy hedge-pig \
hempseed horn-beast hugger-mugger jack-a-nape jolthead lewdster lout \
maggot-pie malignancy malkin malt-worm mammet manikin measle minimus minnow \
miscreant moldwarp mumble-news nut-hook pantaloon pigeon-egg pignut puttock \
pumpion rabbit-sucker rampallion ratsbane remnant rudesby ruffian scantling \
scullion scut skainsmate snipe strumpet varlot vassal waterfly whey-face \
whipster wagtail younker)
# Sets $_word to a random selection of the function's arguments.
function randomword() {
local words
words=("$@")
_word=${words[$(($RANDOM % ${#words[@]}))]}
}
# Prints a random curse
function curse() {
local a1 a2 n
randomword "${adjective1[@]}"
a1=$_word
randomword "${adjective2[@]}"
a2=$_word
randomword "${noun[@]}"
n=$_word
echo "Thou $a1 $a2 $n!"
}
if [[ $# == 0 ]]; then
# No command line args, prompt for number of curses
echo -n "Number of curses: "
read count
else
count=$1
fi
# Print 'em out!
for (( i=$count ; $i ; i-- )) ; do
curse
done