shell脚本中mkdir权限被拒绝

问题描述 投票:0回答:2

我在互联网上看到了类似的问题,但是我找不到与我遇到的问题完全相同的问题。很抱歉,如果这是重复的,但我一直试图找到答案大约一个小时才提出这个问题...

#!/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)。

任何帮助表示赞赏。谢谢!

shell
2个回答
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"

0
投票

看起来像mkdir: cannot create directory '/testing': Permission denied,〜/ test的查找不起作用,所以你实际上是在你的驱动器根目录中创建/testing,你不能作为普通用户。

我不知道bash变量中的那个〜缩写的解决方法,所以要么输入完整路径,要么搜索类似于变通方法的内容。

© www.soinside.com 2019 - 2024. All rights reserved.