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

Posted

技术标签:

【中文标题】Linux 错误消息:授予所有权限后权限被拒绝【英文标题】:Linux error message: permission denied after giving all of the permissions 【发布时间】:2013-07-24 14:29:49 【问题描述】:

当我运行命令时

./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

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

【问题讨论】:

问题是您试图在 shell 脚本中执行应该在实际编程语言中正确执行的操作。 Shell 脚本很危险;很容易让人觉得它是一种强大且富有表现力的语言,然后你开始尝试用它做任何事情,接下来你知道你的腿在膝盖上被啃掉了。 【参考方案1】:

test 命令中,&gt;= 被解释为输出重定向到名为= 的文件。 shell 中没有&gt;= 运算符,但无论如何您都想使用运算符-ge 进行整数比较:

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

【讨论】:

如果我改成那个,我得到:./load_test_triples.sh: line 72: [: -ge: unary operator expected 如果我在变量计数周围添加双引号,我会得到:./load_test_triples.sh: line 72: [: : integer expression expected 听起来count 设置为空字符串。修复get_count 会很好,但我可以提供解决方法。我的回答假定空字符串应被视为 0。 好吧,我们知道,如果我们回显计数,它会给我们正确的值。所以我把逻辑分开了: if [ $count > 0 ] && [ $count = 0 ];然后回显“大于或等于零”否则回显“小于零”fi 但它仍然说“小于零”,即使它回显的值为 10,例如 太棒了!如果 [ "$count:-0" -ge 0 ];然后工作。 :- 背后的逻辑是什么?

以上是关于Linux 错误消息:授予所有权限后权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

在我的 PostGres 表上授予所有权限,但在尝试插入/选择时仍然收到“权限被拒绝”错误

Firebase 安全规则完全打开,但仍然授予权限被拒绝错误

排除来自“du”的所有权限被拒绝消息

挂载文件时获取权限被拒绝错误

访问文件 Android 11 时权限被拒绝

PostgreSQL 和 Django 的权限被拒绝错误。授予 PostgreSQL 用户管理员权限