2012-05-30 70 views
1

在我的.bashrc我有以下代碼爲什麼我在我的.bashrc中使用`uname`時會出現錯誤?

if [`uname` == "Linux"]; then 
    echo "It worked" 
else 
    echo "It didn't work" 
fi 

但是,當我採購我的.bashrc我得到下面的結果

[Linux的:命令未找到

它沒有工作

勉強,[不是錯字,它是錯誤的一部分。如果我註釋掉if語句,那麼錯誤消失,所以我很確定它是錯誤的來源。另外,如果我將Linux更改爲linux,那麼錯誤也會更改爲小寫。

如果我回聲uname我得到Linux。

要獲取我的.bashrc我已經使用了source .bashrc,並且還通過在命令行終端上輸入bash啓動了一個新的bash會話。

我不認爲這很難檢查操作系統的類型,但我似乎無法弄清楚.bashrc的正確語法。

我不明白我在做什麼錯,任何人都可以幫忙嗎?

回答

9

您忘記了方括號後的空格。第一行有看起來像這樣:

if [ `uname` == "Linux" ]; then 

在你的版本,不帶空格的[uname輸出連接成一個名爲[Linux一個可執行文件,它不會在路徑中。

+0

愚蠢的我。謝謝,我應該抓住這一點。 – Fred

+0

+1用於回答OP隱含的「爲什麼」的問題,而不僅僅是顯示正確的語法。我唯一要改變的是Bash並不是說'[Linux'不存在;它是說在PATH中找不到它。細微的區別,但對OP以外的其他人可能很重要。 –

+0

@CodeGnome感謝您的評論。我修好了它。 –

4

猛砸有關間距。你需要空間在你的條件

if [ `uname` == "Linux" ]; then 
    echo "It worked" 
else 
    echo "It didn't work" 
fi 
相關問題