【问题标题】:Bash scripting and comparing 2 directories - BeginnerBash 脚本和比较 2 个目录 - 初学者
【发布时间】:2015-10-15 00:43:54
【问题描述】:
我的问题是我必须检查 $directory 中包含哪些文件,然后我必须使用我指定的名称创建一个新文件并比较该名称是否已存在于此目录中(比较 2目录)。
下面是我的代码:
directory=$(pwd -L "/$nameProject")
read -p "Enter repo name: " nameRepo
# Check if repo name exists in $directory
if [$(find "$directory/$nameProject" -path "$directory/$nameProject/*")==$("$directory/$nameProject/$nameRepo")]; then
instruction..
fi
感谢您的帮助!
【问题讨论】:
标签:
linux
bash
shell
scripting
git-bash
【解决方案1】:
空格对 shell 很重要。引用也是如此。 [ 和 == 和 ] 周围需要空格(尽管 ]; 可以)。 (从技术上讲,比较运算符是= 而不是==。)。
另外find 可以返回多个结果,这会导致您的测试出现问题。
如果您想测试具有给定名称的目录(或文件)是否存在,那么您不需要(或不想)使用find。您可以直接使用[ 测试二进制/内置的-d 和-f(和-e)测试(spec,bashref)。。 p>
if [ -d path/to/directory ]; then
echo "Was a directory"
else
echo "Was not a directory"
fi
【解决方案2】:
你试过了吗
如果 [[ ! -d "$directory/$nameProject/$nameRepo" && ! -f "$directory/$nameProject/$nameRepo"]] ;然后
mkdir "$directory/$nameProject/$nameRepo"
菲
您可以将上述 if 循环一分为二,并通过删除 !