2017-03-17 48 views
0

讀命令我想從另一個shell腳本自動化輸入在Ubuntu

#|bin/bash 
echo "enter y/n" 
read r 
echo $r 

我送輸入使用

echo -e 'y' > /proc/10840/fd/1 

但它僅在控制檯上顯示給輸入到一個shell腳本。它不會作爲讀命令的輸入。

回答

0

腳本的STDIN綁定到它的終端,所以你不能從外部寫入它。你可以爲此使用FIFO。總的想法是:

  1. 腳本開始並創建一個FIFO(或FIFO之前可以通過命令行被創建)
  2. 腳本打開FIFO讀數和在一個循環讀取數據。
  3. 從外面你可以寫入FIFO,然後寫入的內容將被循環中的腳本讀取。

參考:man fifo:如果我跑http://man7.org/linux/man-pages/man7/fifo.7.html

+0

程序,它等待輸入了TTY比是有可能給輸入? –

+0

只有當程序的STDIN是另一個程序(man PIPE)的標準輸出時。但是隻有管道的書寫程序才能爲閱讀程序提供輸入。否則 - 不。 – dmi