Используйте оператор case
(переносимый, работает в любойsh
-подобной оболочке):
case "$CODE" in
[aA] ) PN="com.tencent.ig" ;;
[bB] ) PN="com.vng.pubgmobile" ;;
[cC] ) PN="com.pubg.krmobile" ;;
[dD] ) PN="com.rekoo.pubgm" ;;
* ) printf '\a\t%s\n' 'ERROR!' 'CODE KOSONG' 'MELAKUKAN EXIT OTOMATIS' >&2
exit 1 ;;
esac
Я бы также рекомендовал изменить имена ваших переменных с заглавных букв (, например CODE
), на более низкий -или смешанный -регистр (, например code
илиCode
). Есть много имен, полностью -заглавных букв, которые имеют особое значение, и повторное -использование одного из них по ошибке может вызвать проблемы.
Другие примечания :Стандартное соглашение состоит в том, чтобы отправлять сообщения об ошибках в «стандартную ошибку», а не в «стандартный вывод»; редирект >&2
делает это. Кроме того, в случае сбоя сценария (или программы )лучше выйти с ненулевым статусом (exit 1
), чтобы любой контекст вызова мог сказать, что пошло не так. Также можно использовать разные статусы для обозначения различных проблем (см. хороший пример в разделе «КОДЫ ВЫХОДА» на странице руководства curl
). (Спасибо Стефану Шазеласу и Монти Хардеру за предложения.)
Я рекомендую printf
вместоecho -e
(и echo -n
), потому что он более переносим между операционными системами, версиями, настройками и т. д. Однажды у меня сломалась куча моих скриптов, потому что обновление ОС включало скомпилированную версию bash. с различными опциями, которые изменили поведение echo
.
Двойные -кавычки вокруг $CODE
здесь на самом деле не нужны. Строка в case
— один из немногих контекстов, где их можно безопасно опустить. Тем не менее, я предпочитаю двойные -кавычки ссылок на переменные, если только нет особой причины не делать этого, потому что трудно отследить, где это безопасно, а где нет, поэтому безопаснее просто двойное -цитирование.