如何使用EOF作爲xargs
中的分隔符,以便讀取整個文件?xargs - 使用EOF作爲分隔符
E.g.
cat foo.py | xargs -d EOF -I % python -c %
我知道還有其他方法來獲得上面的例子中工作,但我有興趣在學習如何做同樣的xargs的。
如何使用EOF作爲xargs
中的分隔符,以便讀取整個文件?xargs - 使用EOF作爲分隔符
E.g.
cat foo.py | xargs -d EOF -I % python -c %
我知道還有其他方法來獲得上面的例子中工作,但我有興趣在學習如何做同樣的xargs的。
由於命令行參數不能包含空字節,因此您的問題基本上預先假設您的輸入不包含空字節。因此,最簡單的方法是使用空字節作爲分隔符,從而保證將整個輸入視爲單個項目。
要做到這一點,使用--null
或-0
選項:
cat foo.py | xargs --null -I % python -c %
或者,更簡潔:
xargs -0 python -c < foo.py
這麼說,我無法想象這是什麼有用的。如果你知道你只會有一個輸入項目,那麼爲什麼要使用xargs
呢?爲什麼不直接寫
python -c "$(< foo.py)"
?
是的,我知道替代品 - 我只是想知道是否可以使用xargs來實現。謝謝! – jeffreyveon
對於xargs
來讀取整個文件並將其轉換爲單個參數將是一種無用的行爲。
你想做些什麼:
# replace % with the contents of foo.py and pass as an argument
cat foo.py | xargs -d EOF -I % python -c %
可以這樣做:
# pass contents of foo.py as a single argument
python -c "$(cat foo.py)"
,但有什麼意義,因爲你可以這樣做:
python foo.py
你能詳細說明你試圖達到的是什麼嗎? – devnull