GNU/Linux >> Linux Esercitazione >  >> Linux

echo il carattere di nuova riga non funziona in bash

La storia mista di echo significa che il suo funzionamento predefinito varia da shell a shell. POSIX specifica che il risultato di echo è "definito dall'implementazione" se il primo argomento è -n o qualsiasi argomento contiene una barra rovesciata.

È più affidabile usare printf (sia come comando integrato che come comando esterno) dove il comportamento è più ben definito:gli escape della barra rovesciata in stile C e gli identificatori di formato sono supportati nella stringa di formato (il primo argomento).

printf 'foo\nbar\n'
printf '%s\n%s\n' foo bar

Puoi controllare l'espansione delle sequenze di escape della barra rovesciata di bash echo di comando integrato con xpg_echo opzione shell.

Impostalo in cima a qualsiasi bash script per creare echo espande automaticamente i backslash escape senza dover aggiungere -e ad ogni comando echo.

shopt -s xpg_echo
echo 'foo\nbar'

La pratica consigliata è usare printf per tutti i nuovi script.

printf '%s\n%s\n' "Hello" "World"

printf '%s\n' "Hello\nWorld"

Quando usi bash myfile.sh , Bash viene eseguito in modalità "batch", su un separato processo e non leggi il suo profilo o rcfile.

Quando usi . myfile.sh , il file è originato dall'attuale processo della shell (come se i suoi contenuti fossero stati digitati da te), quindi vede i tuoi alias attualmente definiti.

In generale, è una pessima idea scrivere script che dipendono da una particolare configurazione della shell, soprattutto alias, a meno che tu non li definisca nello script si. (Mai fare affidamento sul .bashrc dell'utente , anche se è tuo.)


Linux
  1. Bash Echo La riga di comando eseguita sulla riga di comando stessa (non in uno script)?

  2. La variabile Curl Outfile non funziona nello script Bash?

  3. R 3.5.0 non funziona su Ubuntu 18.04?

  4. Bash/sh istruzione 'if else'

  5. bash sh - comando non trovato

Comando Bash printf

jps non funziona

fflush() non funziona in Linux

Il comando Linux 'll' non funziona

Comando Conda che funziona nel prompt dei comandi ma non nello script bash

Sfuggi a un carattere asterisco (*) in bash