4
我正在通過管道(stdin)輸入腳本,如(other_command | my_script
)中所述。但是,我需要暫停腳本並等待用戶在閱讀完整個stdin之後按Enter鍵。在讀取(stdin)循環後暫停bash腳本
這是一個示例腳本。
#!/bin/bash
if [[ -t 0 ]]; then
echo "No stdin"
else
echo "Got stdin"
while read input; do
echo $input
done
fi
echo "Press enter to exit"
read
它的工作原理是這樣的;
$ echo text | ./script
Got stdin
text
Press enter to exit
$
它跳過我最後的read
。
但是;
$ ./script
No stdin
Press enter to exit
stops here
$
我怎樣才能獲得read
到我從標準輸入讀取後工作?那麼是否有可以在Linux和OSX上運行的解決方案?
好處,但是,'tty' sais'不是一個tty'如果這樣跑。 '/ dev/ttys006',否則。因此,'read <「/ dev/ttys006」'起作用,但不可行。 – xeor
你確定你沒有錯過任何地方的命令? '「$(tty)」'簡單地說**執行'tty'並提供引用的結果。 'tty'會返回類似'/ dev/ttys006'(取決於系統/終端)。所以''$(tty)「''應該完全''/ dev/ttys006''在你的終端執行以下命令來檢查'(mytty =」$(tty)「; echo」tty:$ mytty「)' –
'回聲「tty」>測試; sh test;回聲字符串| sh test'用'/ dev/ttys006'顯示一行,用'not a tty'顯示一行。發生在我的OSX和Linux測試中。 – xeor