我在整个互联网上都看到了与此类似的问题,但是我一直无法找到与所遇到的问题完全相同的问题。抱歉,如果重复的话,但是我一直在寻找问题的答案大约一个小时,然后才问这个问题...
#!/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)。
感谢您的帮助。谢谢!
答案 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"