Pipe

管道與命令替換

  • April 11, 2021

使用我嘗試過的 linux 命令行和管道進行測試,echo {1..3} | touch但它不起作用。我用touch $(echo {1..3}).

為什麼我不能像第一個範例中那樣使用管道將 echo 生成的列表傳遞給 touch?

感謝 Steeldriver 的評論,它引導我找到了答案。

管道運算符僅在命令接受來自標準輸入的參數時才起作用,在這種情況下,像 touch 或 rm 這樣的命令不起作用,另一種解決方案是使用命令替換,如範例中所示

touch $(echo {1..3})

或者通過使用 xargs 將輸入從標準輸入轉換為命令的參數,因此可以做到

echo {1..3} | xargs touch

就如此容易

引用自:https://unix.stackexchange.com/questions/644614