2016-07-06 38 views
1

從我的理解:是否有任何Julia命令根據是否安裝Julia來返回退出代碼?

-e, --eval <expr>   Evaluate <expr> 

用於直接從終端使用朱莉婭命令,而不是爲了進入交互shell中鍵入了

usr$ julia 

是在格式有任何命令:

usr$ julia -e <command_here> 

,將允許終端以返回未安裝朱(如果它不是),並返回一個不同的值(即,對應於該命令。)如果Julia安裝?

注:

大多數朱莉婭語言的命令只有朱莉婭交互shell中工作,但我想,這是否終端的bash shell中的聲明。

+0

如果你只是想看看,當你運行'julia'你可以嘗試'命令-v julia',看看它的退出代碼會有些事情發生,這是否解決問題了嗎? –

+0

@EricRenouf多數民衆贊成在我所尋找的線。你能給我一個命令來測試它的例子嗎?我對Julia語言不熟悉,文檔也無濟於事。 –

+0

這個命令實際上只是'bash',它不是特定於茱莉婭或其他任何東西。我會寫一個答案,雖然 –

回答

5

隨着bash你可以使用內置的command,以獲取有關如果您嘗試運行一個命令會發生什麼樣的信息。其中的一個結果就是你可以用它來判斷是否會發生任何事情,也就是說,如果該命令不存在(作爲可執行文件,別名或函數)。所以,如果你運行

command -v julia &>/dev/null 

你可以檢查$?,看它是否發現任何東西(0)否(1)。所以,你可以做

if command -v julia &>/dev/null; then 
    echo "Something would happen" 
else 
    echo "Nothing would happen" 
fi 

但是請注意,這不會檢查是否julia實際上會做你想要的。如果有人創建了一個名爲julia的函數,情況就會如此。

chrisaycock的解決方案將使您更有信心julia確實做到了您想要的,但是您要決定是否值得讓某人超過您的名字。

3

只需打印一些內容並將其捕獲以進行比較即可。

RESULT=$(julia -e 'println("Hello")' 2> /dev/null) 

if [[ "$RESULT" == "Hello" ]]; 
then 
    echo "installed" 
else 
    echo "missing" 
fi 
3

bash如果找不到命令,則返回退出狀態127。您可以使用它來確定是否找到可執行文件。

if julia -h 2> /dev/null; [[ $? -eq 127 ]]; then 
    echo "Julia not found" 
fi 
+0

在我舊的fedora安裝(14)似乎試圖找到一個包,建議如果我鍵入一個不存在的命令,並退出0無論。也許這只是該版本的一個錯誤,但似乎並未發生在新版本或Ubuntu或CentOS版本上 –

+0

我忘記提及某些發行版可能會使用'command_not_found_handle'函數攔截未找到的命令。 – chepner

+1

雖然這應該只是交互式shell中的一個問題。 – chepner