Вы создаете каталог с именем / swapfile
и файл с именем swap
, но в / etc / fstab
вы ссылаетесь на / swapfile / swapfile
вместо / файл подкачки / своп
Суть в том, что 0
означает «истина», а1
(или любое другое не-нулевое значение )означает «ложь».
В оболочке верный тест (или успешно завершенная программа ),завершается с кодом 0. Тест [[ -z "$VAR" ]]
возвращает нулевой код (истина ), если $VAR
пуст, или один (ложь ), если он не пуст:
$ var=""; [[ -z "$var" ]]; echo $?
0
$ var="NOT EMPTY"; [[ -z "$var" ]]; echo $?
1
В итоге, если $VAR
не -пусто, то [[ -z "$VAR" ]]
ложно, (возвращает1
)и оператор then
не выполняется.
Предполагалось ли, что тест будет возвращать значение true, если переменная не была -пустой? Если да, замените -z
на -n
:
$ var=""; [[ -n "$var" ]]; echo $?
1
$ var="NOT EMPTY"; [[ -n "$var" ]]; echo $?
0
Для краткости тот же тест выполняется, если -n
опущен:
$ var=""; [[ "$var" ]]; echo $?
1
$ var="NOT EMPTY"; [[ "$var" ]]; echo $?
0