我正在编写一个批处理脚本bash,需要先检查是否存在一个文件夹以知道是否运行某个将创建并填充夹。我之前做过类似的事情,在改变目录和从存储变量中查找目录方面做得很好,但由于某种原因,我只是在这里丢失了一些东西。在bash shell脚本中检查目录的问题
下面大致介绍脚本的工作原理。
if [ -d "$net_output" ]
then
echo "directory exists"
else
echo "directory does not exist"
fi
当我运行这个脚本时,我通常会在前面的行中回显$ net_output,看看它会评估什么。当脚本运行时,我得到我的代码块说“目录不存在”,但是当我然后复制粘贴之前回显的$ net_output目录路径到shell终端中时,它改变目录就好了,证明目录确实存在。我在戴尔机器上使用Ubuntu 12.04。
非常感谢您提供任何帮助。让我知道我可以提供什么额外的信息。
你确定你已经获得'$ net_output'的预期值吗?有没有可能它的值是一个你不在的目录的相对路径?代码本身似乎很好,所以我会检查这个值,以确保它是你期望的 – Cfreak 2012-07-17 16:12:51
另一种可能性是它实际上是一个目录的符号链接,在这种情况下'cd'可以工作,但是'[-d .. 。]'将返回false ... – twalberg 2012-07-17 16:22:38
@twalberg:测试必须成功获得有效的符号链接。从标准:'除-h路径名和-L路径名初选外,如果路径名参数是符号链接,则测试应通过解析符号链接并使用链接引用的文件来评估表达式。' – 2012-07-17 17:41:52