GNU/Linux >> Linux Esercitazione >  >> Linux

Perché viene mostrata una singola barra rovesciata quando si utilizzano le virgolette?

Ho sempre pensato che bash trattasse le barre rovesciate allo stesso modo quando si usa senza o con virgolette doppie, ma mi sbagliavo:

[[email protected] ~]$ echo "foo \ "
foo \
[[email protected] ~]$ echo foo \ # Space after \
foo

Quindi ho pensato che le barre rovesciate fossero sempre stampate, quando si usano le virgolette doppie, ma:

[[email protected] ~]$ echo "foo \" "
foo "
[[email protected] ~]$ echo "foo \\ "
foo \

Perché viene mostrata la barra rovesciata nella prima riga di codice?

Risposta accettata:

La sezione 3.1.2.3 Double Quotes del manuale di GNU Bash dice:

La barra rovesciata conserva il suo significato speciale solo se seguita da uno dei
seguenti caratteri:'$ ', '` ', '" ', '\ ', o newline . Tra virgolette doppie, le barre rovesciate seguite da uno
di questi caratteri vengono rimosse. Le barre inverse che precedono i caratteri
senza un significato speciale non vengono modificate. Una doppia virgoletta può essere
tra virgolette facendola precedere da una barra rovesciata. Se
abilitato, l'espansione della cronologia verrà eseguita a meno che non venga visualizzato un "! ' che appare
tra virgolette viene evitato utilizzando una barra rovesciata. La barra rovesciata che precede
'! ' non viene rimosso.

Quindi \ tra virgolette viene trattata in modo diverso sia da \ tra virgolette singole e \ virgolette esterne. Viene trattato alla lettera, tranne quando è in grado di far sì che un carattere venga trattato alla lettera che potrebbe altrimenti avere un significato speciale tra virgolette.

Nota che sequenze come \' , \? e \* vengono trattati alla lettera e la barra rovesciata non viene rimossa, perché ' , ? e * non hanno già un significato speciale se racchiusi tra virgolette.


Linux
  1. Quando è necessaria la doppia virgoletta?

  2. Perché si potrebbe aggiungere ~/.profile a ~/.bash_profile?

  3. Quando e perché dovrei usare Apt-get Update?

  4. Perché tutti usano Docker?

  5. Rimozione di virgolette singole e doppie in una stringa utilizzando solo i comandi bash/standard di Linux

Perché tutti dovrebbero provare a usare Linux

Perché Shotwell ha le posizioni X e Y invertite quando si utilizza Crop?

Perché i colori Git non vengono visualizzati quando si utilizza Watch?

Perché il mio Ubuntu è in ritardo durante lo spostamento di Windows?

Perché usare innodb_file_per_table?

REJECT vs DROP quando si utilizza iptables