我的脚本工作良好,直到现在。当我从终端调用。/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
。