Kysyisin vielä kohdasta
echo "En tiedä nimeäsi. Joten kerro nimesi."
echo -n "Vastaus ($defaultName): "
Tuo -n tarkoittaako se sitä että jos ei vastaa mitään niin tulostetaan teksti "Vastaus ($defaultName):"
$ man echo
[...]
-n do not output the trailing newline
[...]
Se siis tulostaa rivin ilman rivinvaihtoa. Näin käyttäjä pääsee antamaan vastauksen suoraan tuon rivin perään. Sulkeissa näytetään oletusarvo jos käyttäjä ohittaa vastauksen pelkällä enterin painalluksella. Oletusarvoksi asetin skriptin alussa komennon whoami tulosteen.
Tuon oletusarvonhan voi siis jättää pois mikäli tuolla casella tekee nuo vaihtoehdot.
Näin juuri mutta esimerkiksi nimen tapauksessa on luontevaa tehdä se minun tekemälläni tavalla, koska silloin käytettävä oletusarvo näkyy selkeästi skriptissä ja lisäksi sen pystyy helposti esittämään käyttäjälle.
Jos jälkimmäisessä kysymyksessä oletusarvo olisi "on" tai "ei" niin silloin sekin olisi luontevaa tehdä samalla tavalla kuin käyttäjän nimen kysyminen. Nythän jälkimmäisessä kysymyksessä ei varsinaisesti ole mitään oletusarvoa ja tyhjä syöte käsitellään samalla tavalla kuin mikä tahansa virheellinen syöte.
Tou komento "ecas" ihmetyttää myös mitä se tekee?
Se on "esac" ja se päättää case-komennon.
$ man bash
[...]
case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac
A case command first expands word, and tries to match it against each pattern in
turn, using the same matching rules as for pathname expansion (see Pathname Expan‐
sion below). The word is expanded using tilde expansion, parameter and variable
expansion, arithmetic substitution, command substitution, process substitution and
quote removal. Each pattern examined is expanded using tilde expansion, parameter
and variable expansion, arithmetic substitution, command substitution, and process
substitution. If the shell option nocasematch is enabled, the match is performed
without regard to the case of alphabetic characters. When a match is found, the
corresponding list is executed. After the first match, no subsequent matches are
attempted. The exit status is zero if no pattern matches. Otherwise, it is the
exit status of the last command executed in list.
[...]