Question for you: what is the syntax for declaring a variable, initializing the variable, referencing the variable later, and assigning the value of that variable to another variable? ;-)
Now that I have refreshed your memory, do you still insist it's not lousy?
For the innocent bystanders, here is how those steps are:
set var # just creating the variable .. easy
# but set is a configurable command!
# see your "sh" variety man for more info
set var=value # no space on either side of '='!
# 'value' can only be one word string,
# number or character.
# because single characters are
# ubiquitous in nature ..
# chars chars, everywhere
# if you want a multiword string, use ()
# or "a raw string with spaces"
# unless you want $ not to be expanded
# then use 'raw constant string'
# and if you want to run a program and
# insert its output into the string ..
# use "`program`"
# did I say you can't put spaces around =?
# eskooz me, I am just dereferencing var
set newvar=$var # need a magic syntax, it's teh C ptr
# unless you want the *whole* value
# then you use ($var) or was it $(var)?
# again, ask your sh variety manpage
# I love portability
# if $var isn't bound, use $?var to test
# we said 'set' is a command above
# so using unbound var is ..
# dependant (sic) on settings
# if var contains multiple words (why is that a unit
# of input neway?) you can index it and count elements
# with $#var and $var[i] respectively; we made everything
# an external command or built in, but LENGTH and INDEX
# need to be special syntax, because they're more vital
# than goddamn assignment (which is fine being a builtin)