Shell脚本中拒绝了mkdir权限

时间:2018-09-26 13:00:00

标签: shell

我在整个互联网上都看到了与此类似的问题,但是我一直无法找到与所遇到的问题完全相同的问题。抱歉,如果重复的话,但是我一直在寻找问题的答案大约一个小时,然后才问这个问题...

#!/bin/bash
echo "Enter path:"
read path
echo "Enter title:"
read title
mkdir -pv "${path}/${title}"

进/出:

Enter path:
~/test
Enter title:
testing
mkdir: cannot create directory '/testing': Permission denied

如果我跑步

mkdir -pv ~/test/testing

无论是从终端还是硬编码到脚本中,它都可以正常工作。

我也尝试使用/ bin / mkdir,删除-p,删除mkdir调用周围的{}或“”等,但是我无法使其正常工作。此外,该脚本具有所有权限(-rwxrwxrwx)。

感谢您的帮助。谢谢!

2 个答案:

答案 0 :(得分:0)

看起来像mkdir: cannot create directory '/testing': Permission denied,〜/ test的查询无法正常工作,因此您实际上是在尝试在驱动器根目录中创建/testing,而您不能以普通用户的身份创建它。

我不知道bash变量中该〜速记的替代方法,因此要么输入完整路径,要么搜索诸如此类的替代方法。

答案 1 :(得分:0)

在您的脚本中,问题是~/test~没有得到扩展。因此,如果再次检查,则会在执行脚本的当前目录中找到一个~目录。

以下是使用~展开eval的示例:

$ cat dirtest.sh
#!/bin/bash
echo "Enter path: "
read my_dir
eval my_dir="$my_dir"
echo "Enter title: "
read title
mkdir -pv "${my_dir}/$title"