2012-05-24 18 views

Respuesta

12

En lugar de comillas simples, es probable que la intención de utilizar acentos abiertos:

OS=`uname -s` 

pero que realmente quiere

OS=$(uname -s) 

También, en lugar de una, si DECLARACIÓN, que eventualmente conviértase en una serie if/else, puede considerar utilizar el estuche:

case $(uname -s) in 
Linux) echo Linux;; 
*)  echo other;; 
esac 
+1

+1 para señalar '$()' ... – 0xC0000022L

+0

¡Gracias por la respuesta! Esa es la primera vez que noto la diferencia entre un 'y un ': D – Graham

+1

Esa es solo una de las razones' $() 'es superior :) – chepner

1

Esto devolverá el sistema operativo según lo solicitado; tenga en cuenta que uname no está necesariamente disponible en todos los sistemas operativos, por lo que no forma parte de esta respuesta.

case "$OSTYPE" in 
    linux*) echo "linux" ;; 
    darwin*) echo "mac" ;; 
    msys*) echo "windows" ;; 
    solaris*) echo "solaris" ;; 
    bsd*)  echo "bsd" ;; 
    *)  echo "unknown" ;; 
esac 
+0

-1 No hay nada específico de Bash aquí, pero tampoco resuelve el problema de OP. – tripleee

+0

su pregunta dice "Usar bash, quiero encontrar el sistema operativo y notificar al usuario" 'uname' no es un agnóstico del sistema operativo, no funcionará en algunos sistemas operativos. Esta solución debería funcionar en la mayoría de los casos. Tienes razón en que no es específico, así que he ajustado la respuesta. – mogga

+0

"$ OSTYPE", distingue entre teléfonos Android y instalaciones completas de Linux. – Alejandro

Cuestiones relacionadas