如果存在文件或目录,则覆盖

时间:2015-07-16 04:41:04

标签: shell

我是shell脚本新手。如果存在文件或目录(文件夹),则脚本应覆盖它;如果它不存在则应该创建一个新文件或目录。

这就是我的尝试:

#!/bin/bash
unset File
unset Directory
echo -n "File:"
read File
echo -n "Directory:"
read Directory

if [ -f "$File" ]; then
    echo "file $File exist. Do you want overwrite it? (y/n)" 
    read yn                                              
    if [ $yn = "N" -o $yn = "n"];
    then
        exit 0
    fi
    echo "$File" >> testfile
else
    echo "file Does not exist"      
    touch $File
fi

if [ -d "$Directory" ]; then
    echo "directory $directory exist.Do you want overwrite it? (y/n)"
    read yn
    if [ $yn = "N" -o $yn = "n" ];
    then
        exit 0
    else
        echo "directory Does not exist"     
        mkdir -p  $Directory
    fi
fi    

我需要做出哪些改变才能获得理想的行为?

1 个答案:

答案 0 :(得分:2)

echo "$File" >> testfile

上面的行'追加'到名为'testfile'的文件。它不会覆盖有问题的文件,即$ File。

if [ -d "$Directory" ]; then

    if [ $yn = "N" -o $yn = "n" ];
    then
        exit 0
    else

    fi
fi   

在这部分中,您需要向外部添加'else'子句,而不是内部的子句来处理目录不存在的情况。 此外,如果存在名为'$ Directory'的普通文件,'[ - d“$ Directory”]'测试将返回false。在这种情况下,尝试创建具有相同名称的目录失败。