简单bash脚本;这个语法有什么问题?
我正在阅读bash脚本教程,这似乎应该是可行的,但我显然遗漏了一些东西:简单bash脚本;这个语法有什么问题?,bash,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 当我尝试
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
当我尝试运行上述命令时,我发现命令未找到错误;有什么指针吗?注意那些重要的空格和不应该出现的空格。在这种情况下,if[$isframecount-eq 0]应该是if[$isframecount-eq 0],请参见[和]之前的空格 这样做的原因是,[实际上是一个程序的名称…请自行查看…键入ls/bin/[…现在,如果没有空格,那么bash将查找名为[0或类似名称的程序,这在您的路径中肯定不存在
然后,相反的情况…变量赋值中的=周围必须没有空格。因此$isframecount=1应该是isframecount=1。请注意,我还删除了美元符号,这是正确的做法。注意空格的重要性和不应该存在的地方。在这种情况下,if[$isframecount-eq 0]应该是if[$isframecount-eq 0]查看[和之前]后面的空格
if [ "$isframecount" -eq 0 ]
这样做的原因是,[实际上是一个程序的名称…请自行查看…键入ls/bin/[…现在,如果没有空格,那么bash将查找名为[0或类似名称的程序,这在您的路径中肯定不存在
然后,相反的情况…变量赋值中的=周围必须没有空格。因此$isframecount=1应该是isframecount=1。请注意,我还删除了美元符号,这就是方法
if [ "$isframecount" -eq 0 ]
方括号两侧都需要空格
isframecount=1
赋值语句中没有美元符号,在=周围没有空格
方括号两侧都需要空格
isframecount=1
在赋值语句中,=周围没有美元符号,也没有空格。两个问题:
问题1:
测试运算符中需要有空格。请更改以下行:
if ["$isframecount" -eq 0]
到
问题2:
$isframecount=1
变量前不应有$符号,赋值运算符中不应有空格
将其更改为isframecount=1有两个问题:
问题1:
测试运算符中需要有空格。请更改以下行:
if ["$isframecount" -eq 0]
到
问题2:
$isframecount=1
变量前不应有$符号,赋值运算符中不应有空格
将其更改为isframecount=1以便美元符号用于读取,而没有美元符号用于写入?因此美元符号用于读取,而没有美元符号用于写入?此外,作为一般经验法则,请引用变量!!此外,作为一般经验法则,请引用变量!!+1次要注意:bash实现[作为内置项,而不是使用/bin]/[。@chepner没错,Bash提供了几种传统外部可执行文件的内置替代方案。然而,这只是一种减少进程分叉的优化。学习Bash的人不必考虑这一点,它只会变得更加混乱。+1小注:Bash实现[作为内置文件,而不是使用/bin/[.@chepner没错,Bash提供了几种传统外部可执行文件的内置替代方案。然而,这只是一种减少进程分叉的优化。学习Bash的人不必考虑这一点,它只会变得更加混乱。