Shell Linux错误消息:授予所有权限后,权限被拒绝

Shell Linux错误消息:授予所有权限后,权限被拒绝,shell,sqlplus,Shell,Sqlplus,当我运行命令时 /load\u test\u triples.sh TMODEL/Map.ttl TMODEL Y>>加载语义.log 我得到以下信息: ./load_test_triples.sh: line 72: =: Permission denied 它不喜欢我的脚本中的某些内容,因为如果我从第54行及其后取出代码,它就可以正常工作: 12 MODEL=$2 13 REPLACE=$3 . . 54 get_count () { 55 sqlplus -s use

当我运行命令时

/load\u test\u triples.sh TMODEL/Map.ttl TMODEL Y>>加载语义.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
12型号=$2
13更换=3美元
.
.
54获得计数(){
55 sqlplus-s用户/通行证

有人知道什么可能是问题吗?

测试
命令中,
=
被解释为指向名为
=
的文件的输出重定向。shell中没有
=
运算符,但您仍然希望使用运算符
-ge
进行整数比较:

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

如果我更改为该值,我会得到:./load\u test\u triples.sh:第72行:[:-ge:unary运算符预期如果我在变量计数周围添加双引号,我会得到:./load\u test\u triples.sh:第72行:[::整数表达式Expected听起来像
count
的表达式被设置为空字符串。修复
get\u count
会很好,但我可以提供一个解决方法。我的答案假设空字符串应被视为0。好吧,我们知道如果我们回显count,它会给我们正确的值。因此我分离了逻辑:if[$count>0]&&&[$count=0];则echo“大于或等于零”否则echo“小于零”fi但仍表示“小于零”,即使其回显的值为10,例如sawesome!如果[“${count:-0}”-ge 0];然后成功了。:-背后的逻辑是什么?问题是,您正在尝试用shell脚本来完成实际编程语言中应该正确完成的事情。shell脚本是危险的;很容易让人觉得它是一种功能强大、表达能力强的语言,然后您就开始尝试用它来做任何事情,接下来您就知道了你的膝盖被咬掉了。