2012-05-24 33 views

cevap

12

yerine tek tırnak, muhtemelen komutu ters tırnak kullanmak gerekiyordu:

OS=`uname -s` 

ama gerçekten hangi en sonunda, daha doğrusu bir statment eğer daha da

OS=$(uname -s) 

istiyorum bir if/else dizisi haline gelebilir, şu örneği kullanabilirsiniz:

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

+1 işaret etmek için '$() '... – 0xC0000022L

+0

Cevabınız için teşekkürler! Bu, bir ile bir 've' arasındaki farkı ilk kez fark ettim: D – Graham

+1

Bu sadece bir nedenden kaynaklanıyor: $() 'üstün :) – chepner

1

Bu işletim sistemi istenildiği gibi geri dönecektir - uname'un tüm işletim sistemlerinde bulunmayabileceğini unutmayın, bu nedenle bu yanıtın bir parçası değildir.

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

-1 Burada Bash'a özgü bir şey yoktur ama OP'nin problemini de çözmez. – tripleee

+0

onun sorusu "kullanma bash, işletim sistemini bulmak ve kullanıcıya bildirmek" diyor "uname" işletim sistemi agnostik değil - bazı işletim sistemi üzerinde çalışmayacak. Bu çözüm en çok bash üzerinde çalışmalı. Yanlış olduğunu doğru değil, ben de cevabı ayarladım. – mogga

+0

"$ OSTYPE", android telefonlar ve tam Linux kurulumları arasında ayrım yapar. – Alejandro

İlgili konular