/ / Il confronto delle stringhe in bash non funziona - bash, shell

Il confronto delle stringhe in bash non funziona - bash, shell

Ciao, sono nuovo nello scripting di bash, ho appena scritto questo semplice programma ma sta generando un errore.

#!/bin/bash
os=`uname -o`
echo $os
if ["$os"=="GNU/Linux"] ; then
echo "Linux"
else
echo "Windows"
fi

Usando == o -eq per entrambi i casi sto ottenendo il seguente errore e sta stampando il condn else.

./ostype.sh: line 3: [GNU / Linux == GNU / Linux]: Nessun file o directory di questo tipo

finestre

Versione di Bash: GNU bash, versione 3.2.48 (1) -release (x86_64-suse-linux-gnu)

risposte:

19 per risposta № 1

provare

if [ "$os" = "GNU/Linux" ]

nota gli spazi e il singolo =.

[ è in realtà un programma, e il resto sono argomenti!


5 per risposta № 2

Uso = per il confronto delle stringhe. Vedere: http://tldp.org/LDP/abs/html/comparison-ops.html

Inoltre, dovrebbe esserci uno spazio attorno alle parentesi quadre e all'operatore di confronto, ad es.

if [ "$os" = "GNU/Linux" ]; then
^ ^     ^ ^           ^
| |     | |           |
-------------------- (need spaces here)