/ / tsch: case nie jest wartościujące - shell, tcsh

tsch: case nie jest wartościujące - shell, tcsh

EDYTOWANIE: Początkowo myślałem, że moja zmienna nie akceptuje danych wejściowych z klawiatury. "Poprawiłem moje pytanie, aby dokładniej odzwierciedlić problem.

W poniższym scenariuszu opis przypadku nie jest oceniany.

Jestem całkiem nowy dla tcsh ... Po prostu chcę input_line akceptować postacie a-d jako wejście z klawiatury, której nie jestem pewien i poprawnie wykonuję instrukcję switch.

"Czytam Sobella" "Praktyczny przewodnik po komendach Linuksa, edytorach i programowaniu powłoki". Moja składnia wydaje się poprawne w oparciu o rozdział 9 książki na tcsh, ale w tym momencie nie mam pojęcia, co robię źle.

Przeszukiwanie SO nie dawało podobnych pytań, więc albo dla wielu jest to bolesne, albo nikt o to nie pyta.

Czy jakieś dodatkowe doświadczenie może rzucić okiem i wskazać mój błąd?

#!/bin/tcsh
# menu interface to simple commands
set input_line = ""
echo "n        COMMAND MENUn"
echo " a. Current date and time"
echo " b. Users currently logged in"
echo " c. Name of the working directory"
echo " d. Contents of the working directoryn"
echo -n "Enter a, b, c, or d: "
set input_line = "$<"
#
switch ($input_line)
case of [aA*]:
date
breaksw
case of [bB*]:
who
breaksw
case of [cC*]:
pwd
breaksw
case of [dD*]:
ls
breaksw
default:
echo "There is no selection: $input_line"
breaksw
ends

Dla jasności mogę uzyskać skrypt, który działa dokładnie tak samo w bashu, aby działał poprawnie, ale jestem skoncentrowany na tcsh.

Odpowiedzi:

1 dla odpowiedzi № 1

Ta linia:

set input_line = "$<"

działa dobrze. Problem polega na tym, że masz składnię case etykiety są błędne. Zmiana case of do case i powinno działać.

(Jestem ciekawa, dlaczego tak pomyślałeś of było konieczne.()