终端无法理解 Bash 脚本;权限被拒绝错误?



我的脚本工作良好,直到现在。当我从终端调用。/mkproject .sh时,它显示它有两个参数(我假设是因为我用$1和$2调用它),然后继续给出以下错误消息:

2

mkdir:无法创建目录'/archive ': Permission denied

mkdir:无法创建目录'/backups ': Permission denied

mkdir:无法创建目录'/docs ': Permission denied

mkdir:无法创建目录'/docs ': Permission denied

mkdir:不能创建目录"/资产":拒绝访问

mkdir:不能创建目录"/数据库":拒绝访问

mkdir:无法创建目录'/src ': Permission denied

mkdir:无法创建目录'/src ': Permission denied

我检查了我的文件,包括隐藏的,没有名为myproject的文件。我还拥有mkproject .sh的执行、读取和写入权限。下面是我的脚本:

#!/bin/bash
check_for_file()
{
echo "first argument $0"
echo "second argument $1"
echo "third argument $2"
echo "num arguments $#"
if [ $# -eq 0 ]; then
local testing_file=myproject
if [ -d "$testing_file" ]; then
echo "Directory name already exists"
exit
else
mkdir -p "$testing_file"/{archive,backups,docs/{html,txt},assets,database,src/{sh,c}}
fi
else
local testing_file=$1
if [ -d "$testing_file" ]; then
echo "Directory name already exists"
exit
else
mkdir -p "$testing_file"/{archive,backups,docs/{html,txt},assets,database,src/{sh,c}}
fi
fi
}
check_for_file "$1" "$2"

谢谢!

这是因为您正在尝试创建一个文件夹在"/"(根文件夹),你需要sudo才能做到。试着在if

前添加如下内容
cd $pwd

似乎你想在你的某个目录中找到$testing_file,如果你找不到任何东西,似乎你想创建一个名为$testing_file的目录。

那么,至少你需要像这样修改你的代码:

if [ -d ./$testing_file ]; then

您需要将testing_file路径更改为相对路径或绝对路径(全路径)。

在您的原始代码中,您的if条件表达式正在检查根目录(/)是否有$testing_file

最新更新