bash for loop work in command line, but failed in script

13,864

Solution 1

Use the -c option so that bash reads the commands from the string you pass in. Also, use single quotes around the command.

bash -c 'for i in {1..10}; do echo $i; done'

Solution 2

your bash command line ends with the first ;

so it gets executed separately as:

bash for i in {1..10};
do echo $i;
done

and man bash says command argument should be a file to load: bash [options] [file]

Share:
13,864
Leon
Author by

Leon

An old PHP developer, trying to learn SwiftUI. Any oppotunity to work as a SwiftUI developer is welcomed.

Updated on June 04, 2022

Comments

  • Leon
    Leon almost 2 years

    When a run a for statement in debian bash command line, it works fine. But when I run it in a sh script or run it with bash command, it's keeping report "error near unexpected token `do'" Where is the difference?

    [leon@www] ~/tmp $ for i in {1..10}; do echo $i; done
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [leon@www] ~/tmp $ bash for i in {1..10}; do echo $i; done
    -bash: syntax error near unexpected token `do'
    

    BTW, all works fine in centos enviorment.