Основная проблема здесь:
read $input
В bash обычно $foo является значением переменной foo. Здесь вам не нужно значение, но имя переменной, поэтому оно должно быть просто:
read input
Аналогично, в тестах if $yes и $no должны просто yes и no, так как вам просто нужны строки yes и no.
Здесь вы можете использовать инструкцию case, которая (IMHO) упрощает выполните несколько случаев на основе ввода:
case $input in
[Yy]es) # The first character can be Y or y, so both Yes and yes work
echo "Hello!"
echo "Hello!" | festival --tts
;;
[Nn]o) # no or No
echo "Are you sure?"
echo "Are you sure?" | festival --tts
;;
*) # Anything else
echo "Please answer yes or no."
echo "Please answer yes or no." | festival --tts
;;
esac
Вы можете обернуть два оператора echo и использовать festival в функции, чтобы избежать повторения:
textAndSpeech ()
{
echo "$@"
echo "$@" | festival --tts
}
case $input in
[Yy]es) # The first character can be Y or y, so both Yes and yes work
textAndSpeech "Hello!"
;;
[Nn]o) # no or No
textAndSpeech "Are you sure?"
;;
*) # Anything else
textAndSpeech "Please answer yes or no."
;;
esac
[d5 ] С помощью $input bash заменяет это своим значением, которое изначально ничего не происходит, поэтому запуск команды read:
read
И read по умолчанию сохраняет вход в переменной REPLY. Таким образом, вы можете, если хотите, полностью исключить переменную input и использовать $REPLY вместо $input.
Также посмотрите на инструкцию select в Bash.
Из всех трех основных операционных систем (учитывая, что Ubuntu является третьим, как представитель Linux), я могу сказать вам, что Ubuntu очень похож на Mac OS X в простоте, также я заметил, что оконные диалоги, как правило, замечательно подобно тому, что мы видим в Ubuntu. Хотя Ubuntu поддерживает определенные факторы, похожие на Windows, такие как панель задач по умолчанию (которая обычно заменяется так или иначе).
С точки зрения удобства использования обе операционные системы почти равны.
Как сказал twxwikinger, основное различие между Mac OS X и Ubuntu должно заключаться в том, что Mac OS X является закрытым источником, как он объяснил. По сути, Ubuntu является бесплатным благодаря лицензированию с открытым исходным кодом, Mac OS X; из-за закрытого источника, нет.
Кроме того, Mac OS X и Ubuntu являются кузенами, Mac OS X основана на FreeBSD / BSD, а Ubuntu - на базе Linux, которые являются двумя отдельными ветвями от UNIX.
Mac OS X - это просто просто специальное ядро (потому что Apple может заблокировать то, что аппаратное обеспечение используется так эффективно, они могут оптимизироваться без необходимости использовать множество аппаратных средств) и графический интерфейс, вставленный поверх UNIX. Это также невероятно близко к полностью совместимой с Linux технически, за исключением шагов, предпринятых Apple, чтобы сохранить открытый исходный код. Вполне возможно отказаться от системы упаковки linux, такой как apt-get, в установку OSX, и она работает нормально.
VLC фактически подал в суд на них, чтобы удалить VLC Player из App Store, потому что они не хотели, чтобы они получали финансовую выгоду на своей «односторонней» улице, открывая код, меняя его, а затем блокируя
На самом деле, я думаю, я пытаюсь сказать, что OSX и Linux более похожи друг на друга, чем любое сообщество, вероятно, заставило бы вас поверить. И, как сказал Грейсон, оба они невероятно близки к их дедушке UNIX - вы можете эффективно изучить 90% систем OSX и Linux, просто изучив UNIX.