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 № 1Ta 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.()