簡體   English   中英

測試命令和重定向bas​​h

[英]Test command and redirection bash

為什么test > file以1退出而test arg1 > arg2以0退出?

我以為在test arg1 > arg2 ,首先應用了test arg1然后將輸出(沒有輸出)寫入文件arg2並且由於最后一個命令(重定向)成功,所以退出為0。但是第一種情況也應該如此。 我有點困惑。

重定向不是命令。

| 之所以創建新命令,是因為不僅先前命令“ piped”的輸出是在其他位置,而且在該輸出上還會執行另一個命令。 例如,

ls | grep 'abc' 如果沒有任何匹配的模式,則ls | grep 'abc'將退出1,無論ls是否成功完成。 您看到的帶有$?的退出狀態$? 是最后一個管道的狀態。

重定向是不一樣的,因為它不會將輸出僅提供給文件中的下一個命令。 請注意,重定向可以使你返回1,當你命令,否則工作過,因為你沒有權限寫入文件。 在這種情況下,您的命令將不會執行。

TL; DR:命令需要有效的重定向才能運行。 如果可以運行,則退出狀態將是命令的退出狀態。 重定向的退出狀態是命令的OR,並且重定向(0 OR 1、1 OR 1、1 OR 0都將返回1;只有成功的重定向和成功的命令才返回0)

暫無
暫無

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

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