我是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
我需要做出哪些改变才能获得理想的行为?
答案 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。在这种情况下,尝试创建具有相同名称的目录失败。