Сравните 2 объекта JSON [дубликат]

Чтобы проверить, существует ли каталог в сценарии оболочки, можно использовать следующее:

if [ -d "$DIRECTORY" ]; then
  # Control will enter here if $DIRECTORY exists.
fi

Или проверять, не существует ли каталог:

if [ ! -d "$DIRECTORY" ]; then
  # Control will enter here if $DIRECTORY doesn't exist.
fi

Однако как Jon Ericson указывает, последующие команды не могут работать, как предназначено, если Вы не принимаете во внимание, что символьная ссылка на каталог также передаст эту проверку. Например, выполнение этого:

ln -s "$ACTUAL_DIR" "$SYMLINK"
if [ -d "$SYMLINK" ]; then 
  rmdir "$SYMLINK" 
fi

произведет сообщение об ошибке:

rmdir: failed to remove `symlink': Not a directory

, Таким образом, символьные ссылки, вероятно, придется рассматривать по-другому, если последующие команды ожидают каталоги:

if [ -d "$LINK_OR_DIR" ]; then 
  if [ -L "$LINK_OR_DIR" ]; then
    # It is a symlink!
    # Symbolic link specific commands go here.
    rm "$LINK_OR_DIR"
  else
    # It's a directory!
    # Directory command goes here.
    rmdir "$LINK_OR_DIR"
  fi
fi

Обращают особое внимание на двойные кавычки, используемые для обертывания переменных, причина этого объяснена 8jean в другом ответе .

, Если переменные содержат пробелы или другие необычные символы, это, вероятно, заставит сценарий перестать работать.

9
задан Bob McLaury 17 December 2010 в 00:27
поделиться

1 ответ

Я не уверен, что существует единственный лучший размер. На общем принципе, независимо от платформы, это кажется вероятным для варьирования значительно в зависимости от приложения (код). Также кажется, что используемые аппаратные средства (различные виды сотовой связи, WiFi или даже Ethernet в редких случаях), вероятно, будут важны.

кроме того, согласно некоторым экспериментам я просто работал на macOS, значение SO_RCVBUF, кажется, изменяется после чтения (запустился в ~400K, я установил его на 10 для тестирования моего кода с небольшими буферными размерами, и он перешел назад к ~200K после первого чтения), таким образом, система может делать некоторый эмпирический анализ, он верит для оптимизации на лету. (Поведение на iOS может, конечно, варьироваться от того из macOS.)

Да, я отвечаю на старые вопросы. Что из него?

0
ответ дан 5 December 2019 в 01:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: