2015-07-24 2 views
0

Моя проблема в том, что я должен проверить, какие файлы включены в $directory, тогда я должен создать новый файл с именем, указанным мной, и сравнить, если имя еще не существует в этом каталоге (сравните 2 каталога).Bash scripting и сравнение 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 

Спасибо за любую помощь!

ответ

0

Вы попробовали если [[! -d "$ directory/$ nameProject/$ nameRepo" & &! -f "$ directory/$ nameProject/$ nameRepo"]]; затем mkdir "$ directory/$ nameProject/$ nameRepo" fi

Вы можете разделить приведенный выше цикл if на два и напечатать соответствующую ошибку, удалив!

0

Пространства важны для оболочки. Так цитирует. Вам нужны пробелы около [ и == и ] (хотя ]; в порядке). (Также технически оператор сравнения - =, а не ==.).

Также find может вернуть более одного результата, который может вызвать проблемы для вашего теста.

Если вы хотите проверить, существует ли каталог (или файл) с заданным именем, вам не нужно (или вы хотите) использовать find. Вы можете просто использовать -d и -f-e) испытания на [ тест двоичном/встроенный непосредственно (spec, bashref).

if [ -d path/to/directory ]; then 
    echo "Was a directory" 
else 
    echo "Was not a directory" 
fi