1
在bash中調用函數時是否可以提示用戶輸入?用戶輸入提示功能/管道如果聲明 - Bash
藉此例如:
#!/bin/bash
test1(){
echo "Do you wish to install this program?"
select yn in "Yes" "No"; do
case $yn in
Yes) make install; break;;
No) exit;;
esac
done
}
pip list 2>/dev/null | if grep httplib2; then echo 2>/dev/null; else test1; fi
無視我檢查httplib2的,因爲我知道,如果你到別的回聲「測試」工作正常的事實。我已經用stackoverflow和tldp的例子試過了,所以我現在有點困惑。
你不能從管道if語句中捕獲用戶輸入嗎?
與
pip list 2>/dev/null | if grep httplib2; then
echo 2>/dev/null;
else
echo "Type the year that you want to check (4 digits), followed by [ENTER]:"
read year
echo $year
fi
只是測試,以及與有同樣的效果。
如果我用'EXEC 3 <&0;回聲http | test1 <&3'我得到一個破損的管道。 – 123
我認爲「if grep」從stdout獲得了輸入,然後聲明的其餘部分就是它是真是假? – Chirality
@Revolt起初似乎是合理的,但if-then-else結構是一個_compound command_。如果複合命令的stdin被重定向,那麼,除非我們明確地改變它,複合命令中的每個語句都會看到重定向的stdin。 – John1024