Mam bardzo prosty skrypt csh.Nie znaleziono zdarzenia csh
#!/bin/csh
echo "Hello World!"
echo "How are you today?"
Ale ja dostaję błąd ": Event not found.
Co jest nie tak?
Mam bardzo prosty skrypt csh.Nie znaleziono zdarzenia csh
#!/bin/csh
echo "Hello World!"
echo "How are you today?"
Ale ja dostaję błąd ": Event not found.
Co jest nie tak?
csh używa znaku !
do podstawiania historii. Tak więc w sekwencji !"
, "
nie jest traktowany jako zamykający cudzysłów dla ciągu; raczej powłoka szuka czegoś w historii poleceń zaczynając od "
, tak jak wpisanie !foo
w linii poleceń powtarza ostatnie polecenie zaczynające się od foo
.
Przynajmniej dla oryginalnego csh, to podstawienie jest zawsze wykonywane, nawet w ciągach z pojedynczym cudzysłowem (więc zmiana podwójnych cudzysłowów na pojedyncze cudzysłowy niekoniecznie musi pomóc).
Jedynym sposobem, aby uciec !
charakter jest z \
backslashem.
#!/bin/csh -f
echo "Hello World\!"
echo "How are you today?"
(Na niektóre systemów, uważam, że za pomocą apostrofów zamiast cudzysłowów unika błędu myślę, że to ponieważ w tych systemach /bin/csh
jest dowiązaniem do /bin/tcsh
, która działa nieco inaczej. nie powinno zależeć na tym, jeśli chcesz skrypt być przenośne.)
pamiętać, że Dodaliśmy równieżOpcjado linii #!
. Zapobiega to uruchamianiu przez powłokę twojego $HOME/.cshrc
przy starcie, a generalnie jest to dobry pomysł na skrypty csh. Sprawia, że działają one nieco szybciej i zapobiega przypadkowej zależności od własnego .cshrc
, co może być problemem, gdy inni uruchomią skrypt.
A w każdym pytaniu o csh skryptów, jestem prawnie zobowiązany [*] aby umieścić ten link:
http://www.perl.com/doc/FMTEYEWTK/versus/csh.whynot
[*] nie jestem faktycznie prawnie zobowiązany pisać ten link.
TL; DR: "Co jest nie tak?" "csh." +1 do pytania i odpowiedzi. – stevesliva
Zmodyfikuj pierwszą linię do '#!/Bin/csh -f' i spróbuj ponownie. Może być związany z twoim '.cshrc' lub' .tcshrc'. – timrau
próbowałem. nie działa – Programmer