Bash
命令替換與 I/O 重定向?
我想知道I/O 重定向和命令替換之間的區別?
例如,當我想將
which
命令輸出重定向到cd
命令(我知道它不是目錄)時,該cd
命令不使用which
重定向。例如
which w3af | cd
?我必須使用命令替換cd $( which w3af )
,為什麼?
對於您引用的特定範例,您需要使用命令替換:
cd -P -- "$(dirname -- "$(which w3af)")"
原因很簡單,
cd
不通過STDIN
. 它只接受參數。此外,
which command
會產生文件而不是目錄的路徑。
這是測試命令是否接受的一種方法
stdin
。請注意,這並不詳盡:% { wc ; cat ; } <<INTEST nope INTEST > 1 1 5 % { cd ; cat ; } <<INTEST nope INTEST > nope