簡體   English   中英

unix 中的測試命令不打印輸出

[英]test command in unix doesn't print output

為什么在 unix 終端中命令test 3 -lt 6沒有輸出? 不應該測試輸出 0 或 1 嗎?

我做了一個男人測試,它說

以 EXPRESSION 確定的狀態退出

退出狀態不打印,它只是返回。 例如,您可以在ifwhile對其進行測試

if test 3 -lt 6 ; then
    echo ok
else
    echo not ok
fi

而且,最后一個表達式的退出代碼保存在$?

test 3 -lt 6; echo $?

test返回退出狀態,該狀態指示測試是否成功。 你可以通過閱讀$? 在執行test后立即執行,或者您可以直接在控制結構中使用它,例如:

if test 3 -lt 6 
  do echo "everything is aaaaalright"
  else echo "whaaat?"
fi

shell 中的每個命令都有一個返回值,而不僅僅是test 返回值不定期打印,我們直接測試它們,例如使用ifwhile語句,或者可能在帶有&&||的快捷方式中使用它 . 有時我們可能會存儲返回值,它也可以在變量? .

test命令相當古老。 既然你已經標記了bash那么你可能希望考慮使用

if (( 3 < 6 )); then 

用於算術測試,或

if [[ $name == "Fred Bloggs" ]] ; then 

用於文本或模式測試。

這些通常更直觀且不易出錯。 test一樣, (( ))[[ ]]本身就是命令,可以在沒有ifwhile情況下使用。 它們在 true 時返回 0(成功),在 false 時返回 1(失敗)。

順便說一下,當你做一個man test你實際上是在查看test程序的文檔。 使用man bashhelp test可能會更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM