Составные условные обозначения в Bash Shell для проверки нескольких условий в одном, если проверка

Что плохого в выполнении условий if. Я пытаюсь проверить, передаются ли два аргумента, и если первый аргумент содержит только строковые элементы с алфавитами, а второй аргумент содержит только строку с числами.

if [[ ( "$#" == 2 ) && ( "$1" =~ ^[A-Za-z]*$) && ( "$2" =~ [0-9] ) ]]

Выдает следующую ошибку

cw_validation.sh: line 2: syntax error in conditional expression
'w_validation.sh: line 2: syntax error near `]]
'w_validation.sh: line 2: `if [[ ( "$#" == 2 ) && ( "$1" =~ ^[A-Za-z]*$) && ( "$2" =~ [0-9] ) ]]

Редактировать:

#!/bin/bash
if [[ "$#" == 2 && "$1" =~ ^[A-Za-z]*$ && "$2" =~ [0-9] ]]
    then
        secretKey=admin123
        retries=4
        echo "Please enter the secret key to run the program"
        read inputKey
        while [[ ( "$inputKey" != "$secretKey" ) && ( "$retries" -ge 0) ]]
        do
            echo "Please enter the correct secret key to run the program. Retries left: $retries"
            
else
    echo Wrong Format
    echo "Correct Format: bash cw_edit student's_first_name id"
    echo "e.g bash Samit 19032423"
fi
            

Я не могу воспроизвести вашу ошибку. Можете ли вы опубликовать более длинный фрагмент кода. В идеале полный минимальный пример, который мы можем скопировать, вставить и запустить, чтобы воспроизвести вашу ошибку?

joanis 09.04.2021 15:26

может вы используете sh вместо bash?

piertoni 09.04.2021 15:27

Глупый вопрос, но он возникает чаще, чем вы думаете: ваш скрипт начинается с #!/bin/bash? Если нет, исправьте это.

joanis 09.04.2021 15:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
17
1

Ответы 1

Ваш файл сценария отформатирован с окончаниями строк DOS \r\n. Вы можете определить это по позиции закрывающей одинарной кавычки в сообщении об ошибке (расположенной в начале строки)

cw_validation.sh: line 2: syntax error in conditional expression
'w_validation.sh: line 2: syntax error near `]]
^

Измените окончания строк на dos2unix или sed -i 's/\r$//' cw_validation.sh и обновите настройки в вашем редакторе, чтобы сохранить с окончаниями строк "UNIX".

Другие вопросы по теме