2013-07-24 78 views
1

后否认当我运行命令Linux的错误消息:权限给所有的权限

./load_test_triples.sh TMODEL/Map.ttl TMODEL Y >> load_semantic.log

我得到以下信息:

./load_test_triples.sh: line 72: =: Permission denied 

它不喜欢我的剧本什么的,因为如果我从第54行开始取出代码,那么它工作得很好:

12 MODEL=$2 
13 REPLACE=$3 
. 
. 
54 get_count() { 
55  sqlplus -s user/pass <<! 
56  set heading off 
57  set feedback off 
58  set pages 0 
59  select PRNCT_CHANGE 
60  FROM COUNT_STATISTICS 
61  WHERE model = '$MODEL' 
62  AND NEW_DATE = (SELECT MAX(NEW_DATE) 
63      FROM COUNT_STATISTICS 
64      WHERE MODEL = '$MODEL'); 
65 ! 
66 } 
67 
68 count=$(get_count $1) 
69 
70 echo $count #echoes right number 
71 
72 if [ $count >= 0 ]; then 
73  echo "is greater than or equal zero" 
74 else 
75  echo "is less to zero" 
76 fi 

任何人都知道可能是什么问题?

+0

的问题是,你想在shell脚本应该怎样正确地在实际的编程语言来完成做。 Shell脚本是危险的;很容易让人觉得它是一种强大而富有表现力的语言,然后你开始尝试做任何事情,接下来的事情就是你知道你在膝盖处咬伤你的腿。 –

回答

3

test命令中,>=被解释为输出重定向到名为=的文件。没有>=运营商的外壳,但是你想使用运营商-ge整数比较反正:

if [ "${count:-0}" -ge 0 ]; then 
+0

如果我改变,我得到:./load_test_triples.sh:第72行:[:-ge:一元运算符预期 – Angelina

+0

如果我添加双引号变量数我得到:./load_test_triples.sh:第72行:[:整数表达式预计 – Angelina

+0

这听起来像'count'设置为空字符串。修复'get_count'会很好,但我可以提供解决方法。我的答案假设空字符串应该被视为0. – chepner