Bash
我怎樣才能呼應的價值4-gt34−G噸34 -gt 3,那是 bash 中的測試表達式?
我怎樣才能呼應的價值
$$ 5 -gt 4 $$ ,那是 bash 中的測試表達式?
[ 5 -gt 4 ] | echo
和
echo `[ 5 -gt 4 ]`
最終都列印了一個空行
@Thomas Dickey 的答案有效,但有人可以解釋為什麼上述兩個不起作用嗎?
您的命令不會按照您期望的方式工作,因為測試不會將任何內容輸出到其標準輸出流。它是標準輸出流,通過管道傳送到管道中的下一個命令(您的第一個命令),它是替換命令替換(您的第二個命令)的標準輸出。
順便說一句,請注意,即使您的第一個管道的左側在其標準輸出流
echo
上產生了某些內容,右側也不會顯示它。該echo
實用程序不會從其標準輸入中讀取(但例如cat
會)。任何 shell 命令都會返回退出狀態。該退出狀態是例如
if
語句作用的狀態。退出狀態永遠不會輸出到例如終端,否則會干擾命令或腳本的實際輸出。當你使用
[ 3 -gt 4 ]
[
您使用一些參數呼叫該實用程序。該實用程序返回退出狀態。它完全等同於test 3 -gt 4
參見
man test
andman [
(或help test
在bash
shell 中)。最近執行的命令的退出狀態儲存在特殊變數
$?
中。您可以將其保存在普通變數中,或將其輸出到終端:
[ 3 -gt 4 ] printf 'Exit status of test was %s\n' "$?" printf 'Exit status of printf was %s\n' "$?"
請注意,它
printf
也會產生自己的退出狀態,因此如果printf
呼叫正常,則$?
在輸出測試狀態後該值將為零。上面的程式碼可能會輸出
Exit status of test was 1 Exit status of printf was 0
請注意,測試本身從不在這裡輸出任何內容。它只是提供退出狀態。