Bash для цикла с круглыми скобками работает в Linux, а не в Git Bash - PullRequest
0 голосов
/ 23 января 2019

У меня есть простой цикл bash, который отлично работает в Linux, а не в локальном Git Bash, который основан на Cygwin в Windows
у меня есть это для цикла:

  #!/bin/bash

    for (i=2; i<4; ++i); do
        echo "dddd"
    done

в Git Bash выдает эту ошибку:

./test.sh: line 5: syntax error near unexpected token `newline'
./test.sh: line 5: ` done

версия bash для Linux

Доступна версия Amazon Linux 20xx.0x. [user1 ~] $ bash --version GNU bash, версия 4.2.46 (2) -релиз (x86_64-redhat-linux-gnu) Copyright (C) 2011 Free Software Foundation, Inc. Лицензия GPLv3 +: GNU GPL версии 3 или более поздней

Git Bash версия

GNU bash, версия 4.3.46 (2) -релиз (i686-pc-msys) Copyright (C) 2013 Free Software Foundation, Inc. Лицензия GPLv3 +: GNU GPL версии 3 или более поздней http://gnu.org/licenses/gpl.html

Это бесплатное программное обеспечение; Вы можете изменять и распространять его. НЕТ ГАРАНТИИ, если это разрешено законом.

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Измените окончания строк с CRLF на LF. Есть много способов сделать это. Ваш любимый редактор может иметь возможность изменять окончания строк, а также сохранять существующие окончания строк при сохранении файлов.

Самый простой способ - использовать dos2unix. Чтобы конвертировать на месте, используйте dos2unix bashtest.sh.

0 голосов
/ 23 января 2019

Нужно две скобки:

#!/bin/bash

for ((i=2; i<4; ++i)); do
    echo "dddd"
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...