2017-04-13 31 views
0

如何使用來自文件的第一個輸入執行命令,然後從stdi?如何重定向輸入,並在EOF上以Bash形式返回?

我的意思是,類似於<的重定向,但一旦EOF到達而不將EOF發送到命令就將控制權交還給用戶?

+0

您是否可以使用您正在查找的行爲的特定示例更新您的問題? – mklement0

+0

您確定不想限制重定向的範圍或使用不同的文件描述符嗎? – chepner

回答

1

爲了簡化,我假設你的輸入文件包含「example」。隨意用cat yourfile.txt代替printf 'example'

printf "Enter value: " 
read variable < <(printf 'example' ; cat) 
echo "variable=$variable" 

printf 'example'只是您輸入的第一部分的程序。 cat,當沒有文件調用時,只是回聲stdout你從標準輸入中輸入的內容。在這種情況下,cat將寫入read的標準輸入。

如果你想輸出到你給與第一命令輸入控制檯,您可以用tee和stderr玩:

printf "Enter value: " 
read variable < <(printf 'example' | tee >(cat >&2) ; cat) 
echo "variable=$variable" 
3

簡稱組兩個命令。

{ cat file; cat; } | some_command 

some_command得到的file第一內容和腳本的則標準輸入。