Bash 正在检查父目录上的写入权限
我有一个小问题。基本上这个问题很小,但我的解决方案似乎不起作用 我想出的剧本是这样的:Bash 正在检查父目录上的写入权限,bash,directory,parent,Bash,Directory,Parent,我有一个小问题。基本上这个问题很小,但我的解决方案似乎不起作用 我想出的剧本是这样的: 将目录作为$1参数传递。例如:./script.sh/Desktop/folder1/folder1submap/myfolder 如果结构/folder1/folder1submap/myfolder不存在,我必须创建它。这里没有问题,但问题出现了,因为我必须首先检查位置是否可写。我正在用[-w“target”]命令测试它,但它不起作用,因为如果文件夹不存在,-w总是false。就我而言,它不是 解决方案:
一个选项是使用
dirname
命令:
if [ ! -d "$1" ] && [ -w "$(dirname $1)" ]; then
mkdir "$1"
fi
一个选项是使用
dirname
命令:
if [ ! -d "$1" ] && [ -w "$(dirname $1)" ]; then
mkdir "$1"
fi
这个解决方案似乎不起作用$1在任何情况下都不是符号链接。您能更具体一点吗<代码>$1/。是一个完全有效的路径(假设
$1
是一个目录,而不是一个文件),您应该能够测试它是否像任何其他路径一样可写。是的,我当然可以。我已经测试过了:如果[-w”/home/username/Desktop/folder“],这里我得到了一个真实的评估,正如预期的那样。(文件夹是我桌面上的一个目录)如果[-w”/home/username/Desktop/folder2/。“]这里我得到了一个错误的评估,而folder2在我的桌面上不存在!这就是我因为花哨而得到的<代码>。当然需要存在$1
,因为它是一个实际的目录条目dirname
将$1
视为一个字符串,因此在$1
不作为目录存在时应该可以工作。对此很抱歉。此解决方案似乎不起作用$1在任何情况下都不是符号链接。您能更具体一点吗<代码>$1/。是一个完全有效的路径(假设$1
是一个目录,而不是一个文件),您应该能够测试它是否像任何其他路径一样可写。是的,我当然可以。我已经测试过了:如果[-w”/home/username/Desktop/folder“],这里我得到了一个真实的评估,正如预期的那样。(文件夹是我桌面上的一个目录)如果[-w”/home/username/Desktop/folder2/。“]这里我得到了一个错误的评估,而folder2在我的桌面上不存在!这就是我因为花哨而得到的<代码>。当然需要存在$1
,因为它是一个实际的目录条目dirname
将$1
视为一个字符串,因此在$1
不作为目录存在时应该可以工作。很抱歉。