Salve ragazzi, vorrei creare uno script che mi permetta di cambiare colore della shell usando echo. Per farlo vorrei utilizzare gli argomenti e if. Il risultato finale dovrebbe essere qualcosa del genere:

$ change-color -blue

E lo script deve dare il comando:

/bin/echo -e "\033[0;34m"

Il fatto è che se io scrivo nello script:

#!/bin/bash

if [$1="-blue"]
then
    /bin/echo -e "\033[0;34m"
else
    echo "Esempio"
fi

Non fa quello che vorrei, quindi non saprei come farlo.
Inoltre, vorrei fare in modo che se lo script riconosce che ci sono due o più attributi, stampi a schermo un messaggio di errore, quindi la mia idea sarebbe:

#!/bin/bash

if [$# > 1]
then 
   echo "Puoi scegliere solo un colore alla volta!"
else
   end
fi

Ma nemmeno questo funziona. Help!
P.S.: ovviamente farei tutto ordinato, inserendo variabili e rendendo il codice leggibile

chiesto 09 Aug '15, 17:52

drago3961's gravatar image

drago3961
25113

modificato 10 Aug '15, 11:14

Oddio, perché il codice lo ha scritto così? Io l'ho scritto su più righe e ho messo "#!/bin/bash", non "!/bin/bash"

(09 Aug '15, 17:54) drago3961 drago3961's gravatar image

@drago3961: perché non hai usato il markdown giusto per il codice, ho modificato io.

(09 Aug '15, 20:00) enzotib ♦♦ enzotib's gravatar image

Grazie mille :)

(09 Aug '15, 20:03) drago3961 drago3961's gravatar image
1

@drago3961: ma da linea di comando ti funziona? a me no!

(09 Aug '15, 20:04) enzotib ♦♦ enzotib's gravatar image

Si, mi funziona tranquillamente :) Con questo cambia le scritte successive in blu: /bin/echo -e "\033[0;34m"

(09 Aug '15, 20:07) drago3961 drago3961's gravatar image

Anche se io preferisco usare il verde (0;32): /bin/echo -e "\033[0;32m"

(09 Aug '15, 20:09) drago3961 drago3961's gravatar image

@enzotib prova a usare "echo" anziché "/bin/echo" :) Io lo uso perché a seconda delle distro, "echo" è leggermente diverso, ma su ubuntu dovrebbe funzionare comunque :)

(09 Aug '15, 20:16) drago3961 drago3961's gravatar image

Prima e dopo le parentesi quadre e il segno di uguale devi lasciare uno spazio, e devi mettere le virgolette intorno a $1:

if [ "$1" = "-blue" ]

Inoltre non esiste il confronto con il segno di maggiore, devi usare invece -gt (greater that)

if [ $# -gt 1 ]
coll. permanente

ha risposto 10 Aug '15, 10:32

enzotib's gravatar image

enzotib ♦♦
14.1k113187

@enzotib Grazie mille :D Riguardo al maggiore di, ho scoperto che si può utilizzare mettendo ">" (senza le virgolette). Comunque ho risolto grazie a te :) Non so perchè non visualizzi bene il codice, comunque è: "backslash maggiore"

(10 Aug '15, 10:36) drago3961 drago3961's gravatar image

@drago3961: il segno di ">" lo puoi anche usare dentro le parentesi quadre, ma si usa per il confronto tra stringhe (quale viene prima e quale dopo in ordine alfabetico), mentre per i numeri si devono usare -gt, -lt, -eq, etc.
Che poi funzioni si spiega, perché, per esempio 2 > 1 vale sia come numeri che come ordine alfabetico.

(10 Aug '15, 11:04) enzotib ♦♦ enzotib's gravatar image
1

@drago3961: e altra cosa, non cambiare il titolo della domanda mettendo risolto, anzi, ti chiedo di rimettere a posto il titolo. Mentre per segnalare che il problema è risolto dovresti accettare la risposta risolutiva.

(10 Aug '15, 11:05) enzotib ♦♦ enzotib's gravatar image

@enzotib Grazie ancora per i suggerimenti :)

(10 Aug '15, 11:16) drago3961 drago3961's gravatar image

@enzotib mi servirebbe un altro suggerimento: esiste una funzione di if che permetta di rendere vero l'if (scusa per la ripetizione) in un caso o nell'altro? Mi spiego meglio: se volessi dare lo stesso significato ad un attributo o ad un altro (per esempio "--verde" e "--green", anziché riscrivere il codice uguale cambiando solo l'if (come sto facendo in questo momento), come potrei fare? Intendo qualcosa come

if [ "$1" = "--green" or "--verde" ]

Mi sarebbe veramente di aiuto, grazie in anticipo :)

(10 Aug '15, 16:13) drago3961 drago3961's gravatar image
1

@drago3961: puoi usare

if [ "$1" = "--green" -o "$1" = "--verde" ]
(10 Aug '15, 16:23) enzotib ♦♦ enzotib's gravatar image

@enzotib Grazie :D

(11 Aug '15, 08:20) drago3961 drago3961's gravatar image
La tua risposta
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×105
×9

domanda posta: 09 Aug '15, 17:52

domanda visualizzata: 1,958 volte

ultimo aggiornamento: 11 Aug '15, 08:20

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.