开发者

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

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 cento开发者_运维百科s enviorment.


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'


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]


You can wrap all your script inside inverted commas or in a file. Because here, you're doing bash for i in {1..10} then do echo $i and so on. You should use -c option if you don't put it in a file.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜