2015-04-04 95 views
0

我是新来的bash,我只是想在我的空闲时间中选择。我正在编写一个简单的脚本,用于打印出文件名所提供的文件名的次数,因为文件名中包含字符,然后根据第二个参数进行正数或负数。我在这个脚本中遇到了文件错误的意外结束,我不知道为什么。Bash脚本意外的文件结尾 - 新的编码器

#!/bin/bash 

FILENAME=$1 
NUMBER=$2 

COUNT=0; 
STR=${#FILENAME} 

while ($COUNT < $STR){ 
echo $FILENAME 
$COUNT++ 
} 

if ($NUMBER < 0) 
echo "Negative" 
if ($NUMBER > 0) 
echo "Positive" 

exit 

我与

./script1.sh hello 2 

执行和我期待的输出为

hello 
hello 
hello 
hello 
hello 
Positive 

如果有人可以提供一些线索,以什么回事,并显示错误那简直太好了。

编辑:忘了添加第二个条件添加到计数变量,现在我得到一个错误:

line 9: syntax error near unexpected token `{' 
line 9: `while ($COUNT < $STR){' 
+1

这里很少有错误。我建议你使用http://www.shellcheck.net/来解释每一个。 – fedorqui 2015-04-04 23:22:00

回答

1

基本上你是混淆bash的语法与其他一些语言。

在Bash中,if的语法(如果不使用else)是if condition;then commands;fi。您的代码没有thenfi。此外,条件应该是(($NUMBER > 0))

while的语法是while condition;do commands;done,您的代码也是错误的。

+0

所以它会阅读如果 ($ NUMBER -lt 0) 回声“否定” fi – 2015-04-04 23:21:59

+1

我会说“其他语言”是C,或C系列的东西。 – 4ae1e1 2015-04-04 23:27:43

+0

此外,最好使用正常的'for'循环:'((i = 1; i <= $ {#name}; i ++))'而不是跟踪计数器。 – fedorqui 2015-04-04 23:29:56

相关问题