假設我有一個外殼命令foo
一個期望作爲bar.txt
這樣的文件作爲參數,我想的一行文件傳遞給foo
然後刪除它像這樣:管道數據到外殼命令期待一個文件名
echo "This is a one line file" > bar.txt
foo bar.txt
rm bar.txt
有沒有辦法在一行shell腳本中完成所有操作,而不需要創建文件bar.txt
?
假設我有一個外殼命令foo
一個期望作爲bar.txt
這樣的文件作爲參數,我想的一行文件傳遞給foo
然後刪除它像這樣:管道數據到外殼命令期待一個文件名
echo "This is a one line file" > bar.txt
foo bar.txt
rm bar.txt
有沒有辦法在一行shell腳本中完成所有操作,而不需要創建文件bar.txt
?
您可以使用過程換人:
foo <(echo "This is a one line file")
我假設富不嘗試讀取標準輸入。如果是這樣,作爲替代由賽勒斯建議的進程替換,還可以做
echo "This is a one line file" | foo /dev/stdin
試命令替換這樣
cat $(ls)
其中,「LS」的結果將被取代作爲一個參數爲'貓'執行
不是沒有修改'foo'。如果'foo'可以被修改,你可以傳遞一個字符串作爲參數或修改它從標準輸入讀取並執行:'echo long_string | foo等。 – 2014-10-18 22:30:17
如果你傳遞一個破折號作爲文件名,某些程序會從'stdin'中讀取:'foo -' – ooga 2014-10-18 22:33:16