Czytam dzisiaj samouczek powłoki z http://www.tutorialspoint.com/unix/unix-quoting-mechanisms.htm
W którym wspomina:
Jeśli pojedynczy ciąg znaków pojawia się w ciągu, który ma być wyprowadzony, nie należy umieszczać całego ciągu w obrębie pojedynczych cudzysłowów, zamiast tego należy poprzedzić to odwrotnym ukośnikiem ():
echo 'It\'s Shell Programming'
Próbowałem tego na moim serwerze Centos, to nie działa, pojawia się >
monit o wskazanie więcej.
Zastanawiałem się, ponieważ dwa pojedyncze cytaty przekształcić co w normalnych znaków specjalnych znaków, które obejmują symbol ucieczki \
, ale wykluczyć sobie, '
,
jak mam reprezentować pojedynczy apostrof '
w jednym cytowanym zdaniu?
echo It\'s Shell Programming
lubecho "It's Shell Programming"
?echo Wow, I'm going to have lots of $$$$$$ now
$
. Coś jakecho Wow, I\'m going to have lots of \$\$\$\$\$\$ now
lub po prostuecho Wow, I\'m going to have lots of '$$$$$$' now
echo 'It'"'"'s Shell Programming'
. Po prostu dzielę to na 3 ciągi, pierwszy i ostatni otoczony pojedynczymi cudzysłowami, ale środkowy ma pojedynczy cytat otoczony podwójnymi cudzysłowami.Odpowiedzi:
Samouczek jest nieprawidłowy.
POSIX mówi:
Oto kilka alternatyw:
Dalsza lektura: Cytaty - Wiki Grega
źródło
echo 'It''s Shell Programming'
- zsh zrc_quotes
zestawem opcji (i również powłoką rc) - para pojedynczych cudzysłowów w pojedynczych cudzysłowach reprezentuje pojedynczy pojedynczy cudzysłów.q="'"
iqq='"'
aby zrobić to czystsze. To następnie pozwalaecho "It${q}s ${qq}Shell Programming${qq}"
(nawiasy klamrowe są potrzebne, biorąc pod uwagę końcowe litery). Bezpieczny dla POSIX. Warstwa zewnętrzna musi być podwójnie cytowana.Możesz użyć:
Aby bezpiecznie shell podać cytowaną linię wartości na linię.
W zależności od powłoki możesz również mieć opcję:
Chociaż zwykle wolę robić:
Bardziej ręczne podejście może wyglądać następująco:
... co najmniej bez widelca.
źródło
printf %q\\n "$arbitrary_value"
: inne są zbyt skomplikowane.W przypadku, gdy ktoś przychodzi, aby umieścić w pliku mieszankę pojedynczych i podwójnych cudzysłowów, to też działa:
Wszystko, co powłoka może postrzegać jako zmienną, musi być poprzedzone ukośnikiem odwrotnym:
źródło