(1) Когда вы проверяете на ["Да" ]
, а затем на ["Нет" ]
, вам все равно нужно сравнивать с th
в обеих частях:
[ "$th" = "yes" ] || [ "$th" = "Yes" ]
и
[ "$th" = "нет" ] || [ "$th" = "нет" ]
(2) Для раздела, если [ "$th" = "да" ] || [ "$th" = "да" ]
, вам нужно расширить этот блок кода, чтобы включить все до проверки на No
и использовать elif
в этой точке, чтобы объединить это как один большой составной if-elif-fi
оператор.
Вот он с исправлениями, упомянутыми выше:
echo -n "Are you thirsty?" read th if [ "$th" = "yes" ] || [ "$th" = "Yes" ]; then echo "What would you like to drink?" read th if [ "$th" = "water" ]; then echo "Clear crisp and refreshing." elif [ "$th" = "beer" ]; then echo "Let me see some ID." elif [ "$th" = "wine" ]; then echo "One box or Two?" else echo "Coming right up." fi elif [ "$th" = "no" ] || [ "$th" = "No" ]; then echo "Come back when you are thirsty." fi
В принципе, да. Приложение может работать в фоновом режиме, которое выводит что-то на stdout
:
ping 8.8.8.8 &> /dev/stdout &
Итак:
&>
отправить stdout
и stderr
на stdout
, &
в конце делает ping
работает в фоновом режиме. Но, насколько я правильно понимаю ваш вариант использования, лучше всего будет иметь приложение watch
[1] на переднем плане.
Он периодически запускает команду, указанную в качестве аргумента, и представляет результаты ее выполнения.
Я рекомендую GNU экран
для этого. Сначала запустите новый экземпляр экрана
:
$ screen
Затем сделайте разделение с помощью Ctrl+A Shift+S . Вы можете изменить размер верхней части с помощью команды resize
. Я нашел высоту 9 подходящей для cal
:
Ctrl+A :resize 9
Затем используйте любую команду, которая постоянно производит вывод. Я не использую watch
и даже не использую его на многих системах, но
while true; do cal; sleep 3; done
работает так же хорошо.
Затем Ctrl+A Tab перемещает вас к другой (нижней) части разделения. Наконец, Ctrl+A C открывает новую оболочку, в которой вы можете выполнять команды без вмешательства другой части разделения.
Если вы хотите, чтобы это происходило автоматически, вы можете использовать .screenrc
:
screen /bin/sh -c 'while true; do cal; sleep 3; done'
split
resize 9
focus
screen
См. screen(1)
для полного описания команд и возможного вдохновения для альтернативных конфигураций.