我想使用read命令來初始化一個變量,其值來自前一個命令的輸出。我認爲這是有效的:在UNIX中重定向輸入讀取命令
echo some_text | read VAR
但是$ VAR是空的。 「read從標準輸入中讀取一行。」 manpage說。管道將echo的輸出發送到read的輸入。我錯在哪裏?
我工作的解決方案是
echo text > file ; read VAR < file
但它使用一個文件...
我想使用read命令來初始化一個變量,其值來自前一個命令的輸出。我認爲這是有效的:在UNIX中重定向輸入讀取命令
echo some_text | read VAR
但是$ VAR是空的。 「read從標準輸入中讀取一行。」 manpage說。管道將echo的輸出發送到read的輸入。我錯在哪裏?
我工作的解決方案是
echo text > file ; read VAR < file
但它使用一個文件...
我假設你的shell是bash。當有管道時,管道中的每個命令都在一個子shell中執行,並且父shell連接所有相應的文件描述符。所以,read命令使用stdin並設置VAR變量,然後它的子shell退出並使用變量。
您可以使用此-DOC
read VAR << END
text
END
或者,在bash中,此處的字符串
read VAR <<< "text"
或工藝替代
read VAR < <(echo text)
如何VAR=$(command);
?
我想解決用read命令解決這個問題。 –
[喜歡呢?](http://stackoverflow.com/questions/2746553/bash-script-read-values-from-stdin-pipe/6779351#6779351) –
[bash腳本的可能重複,從stdin管道讀取值](http://stackoverflow.com/questions/2746553/bash-script-read-values-from-stdin-pipe) –