Как проверить условие для сценария оболочки так же, как javascript - PullRequest
0 голосов
/ 09 января 2020

Я попытался проверить состояние сценария оболочки для того же, что и javascript, но это не работает

javascript

const data = "string";
if (data) {
   console.log("condition true");
}

сценарий оболочки

# /bin/bash

data="string"
name=test
age=24

if($data); then
echo "condition satisfied"
fi

if [ "$data" && "$name" && "$age" ]; then
    echo "condition satisfied"
fi

проверьте здесь

Ответы [ 2 ]

1 голос
/ 09 января 2020

Используйте команду test, обычно записываемую как [.

#!/bin/bash

data="string"
if [ -n "$data" ]; then
    echo "condition satisfied"
fi

Для нескольких условий используйте && между тестами.

if [ -n "$data" ] && [ -n "$name" ] && [ -n "$age" ]
0 голосов
/ 09 января 2020

Предполагая, что вы хотите видеть эквивалент консольного журнала , напечатанного на стандартный вывод, выполните следующее:

[ "$data" ] && echo "condition satisfied"

или эквивалентно

test "$data" && echo "condition satisfied"

( двойные кавычки необходимы для случая data содержит пробел), или, если у вас есть bash (так как вы пометили вопрос для bash и для shell ) ,

[[ $data ]] && echo "condition satisfied"

Здесь кавычки не нужны.

Все варианты проверяют, содержит ли переменная данные непустую строку, и если это так, она печатает сообщение.

Это, конечно, , а не точно то же самое, что if(data) в JavaScript, потому что в JavaScript, если данные имеют значение 0, условие будет считаться false . Вы также можете эмулировать этот bevaviour в оболочке, но он становится более громоздким.

...