In bash, i reindirizzamenti possono verificarsi in qualsiasi punto della linea (ma non dovresti farlo! --- vedi the bash-hackers tutorial). Bash prende lo >5
come reindirizzamento, crea il file di output 5
e quindi elabora il resto degli argomenti. Pertanto, si verifica echo 2*3 is a valid inequality
, che fornisce l'output visualizzato nel file di output 5
.
Ciò che probabilmente quello che volete è
echo "2*3>5 is a valid inequality"
o
echo '2*3>5 is a valid inequality'
(con virgolette singole), ciascuno dei quali vi darà il messaggio si specifica come una stampa sulla riga di comando. La differenza è che, entro ""
, le variabili (ad esempio $foo
) verranno compilate, ma non entro lo ''
.
Edit: Il bash man
page dice che gli operatori di redirezione
possono precedere o apparire ovunque all'interno di un comando semplice o possono seguire un comando. I reindirizzamenti vengono elaborati nell'ordine in cui appaiono, da sinistra a destra.
Utilizzare le virgolette: '$ echo "2 * 3> 5 è una disuguaglianza valida"' In caso contrario, il vostro sono [reindirizzamento] (http://www.tldp.org/LDP/abs/html/io-redirection.html) l'output – dawg
non è così ovvio. Ho usato Linux per 15 anni, non avevo idea che potessi mettere il reindirizzamento ovunque fino ad ora. – njzk2
@ njzk2, POSIX non richiede che sia supportato in un punto diverso dall'inizio o alla fine, ma non * disabilita * tale comportamento; quindi, è un'estensione bash, ma perfettamente legale. –