2014-10-18 67 views
0

假設我有一個外殼命令foo一個期望作爲bar.txt這樣的文件作爲參數,我想的一行文件傳遞給foo然後刪除它像這樣:管道數據到外殼命令期待一個文件名

echo "This is a one line file" > bar.txt 
foo bar.txt 
rm bar.txt 

有沒有辦法在一行shell腳本中完成所有操作,而不需要創建文件bar.txt

+0

不是沒有修改'foo'。如果'foo'可以被修改,你可以傳遞一個字符串作爲參數或修改它從標準輸入讀取並執行:'echo long_string | foo等。 – 2014-10-18 22:30:17

+1

如果你傳遞一個破折號作爲文件名,某些程序會從'stdin'中讀取:'foo -' – ooga 2014-10-18 22:33:16

回答

1

您可以使用過程換人:

foo <(echo "This is a one line file") 
0

我假設富不嘗試讀取標準輸入。如果是這樣,作爲替代由賽勒斯建議的進程替換,還可以做

echo "This is a one line file" | foo /dev/stdin 
0

試命令替換這樣

cat $(ls) 

其中,「LS」的結果將被取代作爲一個參數爲'貓'執行