проверить, равна ли переменная null в fish

Я хочу проверить условие, если переменная имеет значение null в fish (дружественная интерактивная оболочка).

if test "$argv" = null
    # do something...
else 
    # do something else...
2
29.06.2020, 12:01
2 ответа

Я не знаю конкретно слово "рыба", но знаю стандартный "тест".

Попробуйте:

test "$argv" = ""

или

test "x$argv" = x

или

test -z "$argv"

Это предполагает, что вы хотите проверить, что он не установлен или пуст. Если вам нужен только один из этих двух случаев, вам понадобятся модификаторы расширения переменных оболочки.

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

Третий пример — это опция testдля проверки наличия пустой строки.

2
18.03.2021, 23:23

Я тоже не очень хорошо разбираюсь в fish, но, как и в других оболочках, в нем тоже есть различие между неопределенной переменной и пустой.

Из часто задаваемых вопросов следует, что вы можете проверить, определена ли переменная с помощью set -q var, и использовать string length -q, чтобы увидеть, содержит ли она не -пустую строку.

Например, чтобы увидеть, определен ли первый аргумент скрипта или пуст или не -пуст:

#!/usr/bin/fish
if not set -q argv[1]
    echo 'not defined'
else if not string length -q -- "$argv[1]"
    echo 'defined but empty'
else
    echo 'defined and non-empty'
end 

Если вас не волнует различие между неопределенной и определенной, но пустой переменной, просто пропустите первый тест, неопределенное значение будет расширено до пустой строки в двойных -кавычках.

2
18.03.2021, 23:23

Теги

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