【问题标题】:"Permission Denied" ls error in bash scriptbash脚本中的“权限被拒绝”ls错误
【发布时间】:2021-01-28 12:49:51
【问题描述】:
#!/bin/bash
#ls /home/"$(whoami)"
#ls /home/"$(whoami)/.bashrc"

[[ $# -eq 0 ]] && echo "Pass at least a valid filepath!" && exit 1;
[[ $# -eq 1 ]] && mode=1; arg1="$1"
[[ $# -eq 2 ]] && mode=2; arg1="$1"; arg2="$2"
if [[ mode -eq 1 ]]
then
while :
do
"$(ls "$1")"
[[ $? -eq 0 ]] && echo "$1 has been downloaded! I'm going to poweroff now.."
sleep 20m;
done
elif [[ mode -eq 2 ]]
then
while :
do
"$(ls "$1")" 3> /dev/null
if [[ $? -eq 0 ]]
    then
    "$(ls "$2")" 3> /dev/null
    if [[ $? -eq 0 ]]
        then
        echo "$1 \n and \n $2 \have been downloaded! I'm going to poweroff now.."
    fi
sleep 20m;
fi
done
else
echo "Not more than two arguments! Exiting.."; exit 1;

这是我的代码。(这不是最终版本,只是测试) 给定一个存在的文件路径,它会返回一个 ls 权限错误。我检查了权限并尝试了不同的情况,如最初的 cmets 所示,我还检查了谁在运行脚本(也许这是一个荒谬的错误(?))。 我在 bash 提示符下尝试了相同的命令和文件路径,并且效果很好。有人知道可能是什么问题吗? 错误示例:

Documents/CheckFilesThenDo.sh: line 12: /home/user/Downloads/file: Permission denied

编辑: 如前所述,并不是用户不能 ls 文件(真正的权限错误)。现在看来,它导致了这种行为的“$(ls)”(ls 有效)。我还是不明白为什么。

【问题讨论】:

  • 每个 linux 文件都设置了权限。你可以阅读更多关于它here
  • /home/user/Downloads/file 的所有者是谁?该错误告诉您您不拥有或无权查看该文件夹或文件
  • 为什么在不将结果读入变量时尝试扩展 ls 命令?
  • 如前所述,用户拥有所有必要的权限。我重新编辑了这个问题,希望能理解这种行为。
  • @RamanSailopal 我这样做只是因为我看到了这个错误。我知道没有必要。

标签: linux bash shell gnu ls


【解决方案1】:

循环中的第一个命令,

"$(ls "$1")"

没有多大意义。您正在执行ls,收集其标准输出,并将信息解释为要执行的命令。

这留下了两种可能性:

如果此时$1 包含一个文件名,并且ls 有权访问其目录,则该命令将简单地输出该文件名,然后您将执行它。这仅在文件具有执行权限时才有效,在这种情况下,您可以更简单地编写

"$1"

如果 $1 没有设置 x 位,您会得到“权限被拒绝”。

如果文件不存在,ls 不会向标准输出写入任何内容。您只是看到有关丢失文件的错误消息,但没有执行任何操作。

除此之外:如果您真的在问题中引用了完整的错误消息,这意味着脚本不是由 bash 执行的,因为 bash 会说:

bash : Documents/CheckFilesThenDo.sh: : line 12 : .... 权限被拒绝。

【讨论】:

  • 完美!在这种情况下,我不太了解“$()”的工作方式。现在我做到了。谢谢。
  • @sirakai :如果这回答了你的问题,如果你接受我的回答,我会很高兴。
【解决方案2】:

每个 Linux 文件都设置了权限! 您可以在here! 阅读有关权限类型和...的信息!

【讨论】:

    猜你喜欢
    • 2015-04-09
    • 2021-11-25
    • 2016-07-16
    • 2012-06-19
    • 2020-10-26
    • 2014-06-18
    • 2015-11-15
    • 1970-01-01
    • 2021-07-20
    相关资源
    最近更新 更多