Что плохого в выполнении условий 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
может вы используете sh вместо bash?
Глупый вопрос, но он возникает чаще, чем вы думаете: ваш скрипт начинается с #!/bin/bash? Если нет, исправьте это.





Ваш файл сценария отформатирован с окончаниями строк 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".
Я не могу воспроизвести вашу ошибку. Можете ли вы опубликовать более длинный фрагмент кода. В идеале полный минимальный пример, который мы можем скопировать, вставить и запустить, чтобы воспроизвести вашу ошибку?