Bash
在作為 heredoc 傳遞的 python 腳本中使用管道內容
我知道 here-doc 進入標準輸入。我看到 here-doc 在來自管道的內容之前優先進入標準輸入(見下文)。
但也許有一個技巧可以讓它發揮作用?
總而言之,我想避免創建腳本文件。我知道
-c
python中有開關,但也不想把所有東西都放在一行中。echo values | python3 <<SCRIPT with open('/dev/stdin') as f: print(f.read()) # -> "values" SCRIPT
目前的輸出是腳本本身:
with open('/dev/stdin') as f: print(f.read()) # -> "values"
你不能有兩個標準輸入——python 怎麼知道程式碼在哪裡停止,內容從哪裡開始?
這是使用Process Substitution的解決方法:
echo values | python3 <(cat <<SCRIPT with open('/dev/stdin') as f: print(f.read()) # -> "values" SCRIPT )