2011-03-27 144 views
0

我是shell编程中的新手......基本上我是新手,但我需要一个简单的脚本来完成循环和执行php脚本。我尝试了以下内容:近意外的标记'做”bash/shell脚本语句

+2

您需要正确位置的空格。 shell语法通常依赖于空格,并且在方括号前后需要一个空格。第一行应该开始'#!'。因为你没有空间(shell [',可能不存在'],'do'是一个意外的关键字 - 没有前面的循环需要它,所以你会得到语法错误。 – 2011-03-27 01:23:31

回答

1

或者,您可以使用for循环

for((i=1;i<=13;i++)) 
do 
    php /var/www/html/pos.php & 
done 

由于for循环已经创建了计数器,所以您不必手动声明计数器。

1

不能看到语法错误:

!/bin/bash 
i=0 
while[ i < 13 ] 
    do 
php /var/www/html/pos.php & 
((i++)) 
done 

但由于某些原因,语法不好......我得到的错误行4你的代码,但它应该是这样的

while [ $i -ne 3 ] 
do 
    echo "on number $i of 3" 
    i=`expr $i + 1` 
done 
+0

不需要使用'expr',因为bash shell支持增加内部数学运算 – kurumi 2011-03-27 03:46:15

+2

由于expr提供了更多的可移植性,所以不需要使用bashisms。 – 2011-03-27 12:54:04

+1

@william,OP在bash上放置了一个标签,所以它是bashism ..OP也没有说他需要编写可移植代码。 – kurumi 2011-03-27 15:01:40

2

你需要有和左支架[while之间的空间,你需要把do在单独的行或用分号(这两个都是w时相当常见的错误选址循环)。此外,左括号[相当于man test支持-lt但不<

function doStuff() { 
    local counter=0 
    while [ $counter -lt 10 ] 
    do 
    echo $counter 
    let counter=$counter+1 
    done 
} 
doStuff 

OR

function doStuff() { 
    local counter=0 
    while [ $counter -lt 10 ] ; do 
    echo $counter 
    let counter=$counter+1 
    done 
} 
doStuff 
1

我想你想要做的事,如:

i=0; while (($i<10)); do i=$((i+1)); echo $i; done 
2
!/bin/bash 
i=0 
while ((i < 13)) 
do 
    php /var/www/html/pos.php & 
    ((i++)) 
done