nieoczekiwany EOF podczas wyszukiwania pasującego `` ''
3
Czy ktoś mógłby mi wyjaśnić, dlaczego echo 'test \'hi\'' > testnie działa? Nie zapisuje hisię do pliku test. Wydaje się, że pojedyncze cytaty zostały właściwie usunięte, prawda?
Czy to konkretny język czy coś takiego? i prawdopodobnie byłoby to pytanie StackOverflow ..
cutrightjm
przyczyna błędu: 2. cytat kończy ciąg rozpoczynający się od 1. cytatu; trzeci cytat został pominięty, więc jest to tylko postać; a czwarty cytat nie pasuje do końca łańcucha.
@glennjackman - Zgadzam się, ale ważne jest, aby zrozumieć, że można to zrobić bez zmiany typów cytatów - co by się stało, gdybyś musiał wyświetlić oba? Są one również zasadniczo różne, ponieważ podwójne cudzysłowy pozwolą na rozszerzenie podstawień zmiennych, podczas gdy pojedyncze cudzysłowy ich nie rozwiną.
ziesemer
To prawda, że zależy to od tego, czego chce OP. Ale należy wziąć pod uwagę czytelność / łatwość konserwacji.
glenn jackman
Dzięki. Tekst hijest zwykle zmienną wprowadzaną przez użytkownika, dlatego jest to z cudzysłowami (przekazywanymi z PHP przez escapeshellcmd).
Odpowiedzi:
Nie można osadzać pojedynczych cudzysłowów w ciągach pojedynczych cudzysłowów. Zamiast tego musisz umieścić i uciec z pojedynczych cudzysłowów poza cytowany ciąg.
Na przykład:
To pisze:
test
z'test '
(z jedną spacją po słowietest
- podświetlanie składni nie odzwierciedla tego tutaj ...)\'
się jako dosłowny cytathi
z'hi'
.\'
się jako dosłowny cytattest 'hi'
zapis do pliku o nazwietest
.źródło
echo "test 'hi'" > test
zadziała równieżhi
jest zwykle zmienną wprowadzaną przez użytkownika, dlatego jest to z cudzysłowami (przekazywanymi z PHP przezescapeshellcmd
).