GNU/Linux >> Linux Esercitazione >  >> Linux

Durante l'utilizzo di printf come sfuggire ai caratteri speciali nello script di shell?

A beneficio delle persone che sono arrivate qui facendo clic sul primo risultato di ricerca dopo aver cercato su Google "bash printf escaped", il modo corretto di utilizzare printf per generare testo con escape bash è:

printf " %q" "here is" "a few\n" "tests"

Quale output (senza una nuova riga finale):

 here\ is a\ few\\n tests

Prova

printf "%s\n" "$string"

Vedere printf(1)


Puoi usare $' ' per racchiudere le nuove righe ei caratteri di tabulazione, quindi un semplice echo sarà sufficiente:

#!/bin/bash 

get_lines() {    
   local string
   string+='The path to K:\Users\ca, this is good'
   string+=$'\n'
   string+='The second line'
   string+=$'\t'
   string+='123'
   string+=$'\n'
   string+='It also has to be 100% nice than %99'

   echo "$string"
}

get_lines

Ho anche apportato un paio di altre modifiche minori al tuo script. Oltre a rendere la tua FUNCTION_NAME minuscola, ho utilizzato anche la sintassi della funzione più ampiamente compatibile. In questo caso, non c'è un grande vantaggio (come $' ' strings sono comunque un'estensione bash) ma non c'è motivo di usare function func() sintassi per quanto ne so. Inoltre, l'ambito di string potrebbe anche essere locale rispetto alla funzione in cui viene utilizzato, quindi ho cambiato anche quello.

Uscita:

The path to K:\Users\ca, this is good
The second line 123
It also has to be 100% nice than %99

Posso notare che "man printf" mostra chiaramente che un carattere "%" deve essere sfuggito per mezzo di un altro "%", quindi printf "%%" risulta in un singolo "%"


Linux
  1. Come sfuggire alle citazioni in Shell?

  2. Come gestire gli interruttori in uno script di shell?

  3. Come impostare l'indirizzo proxy a livello di sistema utilizzando lo script della shell?

  4. Come cercare i file usando regex nello script della shell linux

  5. Mostra caratteri speciali in Unix mentre usi il comando 'less'

Come identificare le directory di lavoro usando i caratteri e le variabili della shell

Come utilizzare le variabili negli script della shell

Come creare script di shell

Come eseguire un comando in uno script della shell?

Come ripetere un trattino (trattino) nella shell

Come digitare caratteri speciali in Linux?