if [ ! -d /home/dir ]; then
mkdir /home/dir
fi
Другом мин, и однажды я наткнулся на это в классе, у нас обоих были разные ответы на него, но я как бы хочу доказать ему, что, возможно, я прав.
он говорит это "создает каталог / home / dir, только если он не существует"
Я сказал нет, что он "удаляет каталог / home / dir, а затем делает его снова"
Кто прав? ... или мы оба ошибаемся?
Ваш друг почти прав, сценарий создает / home / dir
, только если это еще не каталог. (Если это что-то еще, mkdir
будет запущен, но не удастся.)
[
вводит тест, который здесь это ! -d / home / dir
; -d / home / dir
проверяет, существует ли / home / dir
и является ли каталогом, и !
отрицает это. Все это заключено в , если
/ , то
означает, что если / home / dir
еще не является каталогом, то mkdir / home / dir
будет бег.
В частности, mkdir
, более краткий способ записать все, что есть
mkdir -p /home/dir
Ваш друг прав. Это как «если не каталог»
Но скажите ему, что вы можете оставить все условие и просто написать mkdir -p / home / dir