【发布时间】: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 我这样做只是因为我看到了这个错误。我知道没有必要。