Замените:
if [ "$choice"==1 ]
с:
if [ "$choice" = 1 ]
сделать то же самое для всех последующих тестов.
Когда оболочка видит «$ Choice» == 1
, он видит одну строку. Если бы выбор
был, например, 2, то он видит строку 2 == 1
. Это не тест на равенство. Это строка. Поскольку это непустая строка, тест возвращает true. Следовательно, все варианты выполнены.
Для того, чтобы распознать тест на равенство, необходимы пробелы.
отдельно, а как незначительная точка для [
стилей тестов, символ для равенства составляет =
. Bash будет принимать ==
для этого, но это не правильно и не будет работать в других снарядах.
[...] [...] [...] [...]
тесты на командной строке
. Легко исследовать, как [[
тесты работают в командной строке. Во-первых, давайте продемонстрируем, что пустые строковые тесты false:
$ if [ "" ]; then echo True; else echo False; fi
False
непустой строки, что бы она ни было, является True:
$ if [ abc ]; then echo True; else echo False; fi
True
Теперь давайте посмотрим 2 == 1
:
$ if [ 2==1 ]; then echo True; else echo False; fi
True
2 == 1
- это непустая строка, она проверяет истину.
Теперь давайте добавим пробелы и выполняем проверки равенства:
$ if [ 2 = 1 ]; then echo True; else echo False; fi
False
$ if [ 2 = 2 ]; then echo True; else echo False; fi
True
в качестве дополнительной тонкости =
тесты на равенство строки, которое происходит, чтобы работать хорошо. Чтобы проверить числовое равенство, используйте -EQ
вместо этого.
$ if [ 2 -eq 2 ]; then echo True; else echo False; fi
True
Вы хотите обновить JDK8, используя «yum Update»?
либо с yum localinstall $ newrpm
(ручное решение)
или построить репозиторий, содержащий Oracle -RPMS и ссылка, которая позволила репозитой в /etc/yum.repos.d/
после этого Обновление Yum
также должно обновить Oracle-JDK.