, что означает отсутствие программного RAID. Если бы у вас был сломанный программный RAID, он выглядел бы как
Я получил его со своего сервера, так что некоторые детали для вас были бы другими, и я воссоздал его из записей во время последнего отказа HDD, так что некоторые детали могут быть неправильными, но важные биты -[114093]. [114094] [114443][114811][_U][114812] (это означает, что одно из зеркал не работает; если бы все было хорошо, то было бы сказано [114813][UU][114814]), и
(F)[114816] (что говорит о том, какая половина не работает, в данном случае это раздел на [114817]/dev/sdb[114818] в обоих случаях). Их собственные инструкции, на которые вы ссылаетесь, показывают нечто очень похожее.
Ваш код работает, если каталог вы CD
на самом деле существует.
Я изменил строку CD
в каталог в моей системе (Diff):
- cd ./bin/x86_64/bin/ls
+ cd /bin/
, затем RAN:
ry@~/Desktop:$ sh test /bin /
ok
/bin
Обратите внимание, что вы должны кормить свой скрипт два аргумента из-за этого: [$ # -EQ 2]; Затем
также обратите внимание, что . / Bin /
на самом деле такой же, как Bin /
.
Вы можете использовать следующее, чтобы проверить наличие каталога:
if [[ -d "$1" ]]; then
Если вы хотите проверить любой файл, вы должны использовать
if [[ -e "$1" || -L "$1" ]]; then
Если вы хотите проверить, является ли файл обычным файлом (или символической ссылкой на обычный файл), но НЕ файлом каталога (или устройства, сокета, именованного канала ...), тогда вы можете использовать:
if [[ -f "$1" ]]; then
Если файл может существовать но вы хотите быть уверены, что это не нулевой размер:
if [[ -s "$1" ]] then;
Все эти тесты основаны на результате системного вызова stat ()
(за исключением -L
, который полагается на lstat ()
). Если у вас нет разрешения на такой вызов файла (например, потому что у вас нет доступа для поиска в каталоге, в котором находится файл, или в каталогах, участвующих в разрешении файла для символических ссылок), то эти тесты молча вернут false, как если бы файлы не существовали.
[[...]]
- это оператор ksh
, также поддерживаемый bash
и zsh
. Стандартный эквивалент (для использования в sh
) - это команда [
(для второго примера выше используйте [-e "$ 1"] || [-L " $ 1 "]
).
Чтобы проверить, существует ли каталог в сценарии оболочки, вы можете использовать следующее:
dir=$1
if [ -d "$dir" ]; then
#means that $dir exists.
fi
чтобы проверить обратное, добавьте! перед -d -> [! -d ....]