-2
FROM_PROJECT=false
if [[ -z $INV_NAME ]]; then
if [[ -z $PRO_NAME ]]; then
echo "error: variable not set" >&2
exit 1
elif [[ -z $INV_FILE ]]; then
echo "error: variable INV not set" >&2
exit 1
fi
FROM_PRO=true
elif [[ -n $PRO_NAME ]] || [[ -n $INV_FILE ]]; then
echo "error: variable INV_NAME is not compatible with PRO_NAME and INVENTORY_FILE" >&2
exit 1
Я не уверен, что эти «-z» и «-n» здесь делают?Что делает этот сценарий оболочки?
http://explainshell.com/ предоставит вам объяснение любой отдельной строки оболочки; '[[-z $ INV_NAME]]' или '[[-n $ PRO_NAME]]' можно использовать там. –
BTW, используя строки 'true' и' false' как условные обозначения - очень плохая практика. Код, который делает это обычно, также делает что-то вроде 'if $ FROM_PROJECT; затем ... "и, тем самым, выполняет выполнение полу-произвольного кода (если содержимому ваших переменных можно присвоить произвольные значения, добавив что-то, что необходимо проверить для проверки безопасности). Вместо этого используйте пустое/не пустое состояние, чтобы выполнить логическое определение. –
(Можно также использовать '0' и' 1' как булевы достаточно легко: 'if ((some_value))' будет правдивым, если 'some_value' содержит положительное целочисленное значение или имя переменной, которая сама содержит положительную целочисленное значение). –