简单的bash脚本;这个语法有什么问题?

时间:2014-02-18 03:53:52

标签: bash

我正在阅读bash脚本教程,这似乎应该可行,但我显然错过了一些东西:

isframecount=0
framecount=0
while read p; do
  if ["$isframecount" -eq 0]
    then 
    echo $p
    $isframecount = 1
    else
    echo "frame count"
    echo $p
    $isframecount = 0
  fi
done < $filenam

当我尝试运行上述操作时,我收到“命令未找到错误”;任何指针?

3 个答案:

答案 0 :(得分:2)

留意重要的空间和不应该的空间。在这种情况下,if ["$isframecount" -eq 0]应为if [ "$isframecount" -eq 0 ](请参阅[之后和]之前的空格)。

原因是[实际上是程序的名称...自己看看...输入ls /bin/[ ...现在,如果没有空格,那么bash会寻找一个名为["0"的程序或类似的程序,这在您的路径中肯定不存在。

然后,相反的情况......变量赋值中=周围必须没有空格。因此$isframecount = 1应为isframecount=1。请注意,我也删除了美元符号,这是要走的路。

答案 1 :(得分:2)

if [ "$isframecount" -eq 0 ]

方括号两侧都需要空格。

isframecount=1

没有美元符号,在赋值语句中=周围没有空格。

答案 2 :(得分:2)

两个问题:

问题1:

您需要在test运算符中包含空格。更改以下行:

if ["$isframecount" -eq 0]

if [ "$isframecount" -eq 0 ]

问题2:

$isframecount = 1

变量前应该没有$符号,赋值运算符中没有空格

将其更改为isframecount=1