Bash if-check не работает [dублировать]

Наконец-то я смог решить свою проблему. Я предлагаю решение для тех, чей компьютер имеет 2 GPU. Убедитесь, что вы используете свой дискретный графический процессор при попытке установить ubuntu.

-3
задан 20 February 2018 в 13:28

3 ответа

В Bash's test (синоним для [ ... ]), а также для обычно предпочтительных [[ ... ]] выражений вы должны отделить все аргументы и операторы пробелами.

Кроме того, вы всегда должны цитируйте свои переменные. Также рекомендуется использовать отступы, чтобы сделать ваш код более удобным для чтения и использовать синтаксис подстановки нового стиля $(...) вместо `...`.

О, а lsb_release имеет -s или --short, чтобы опустить первый столбец, вам не нужно анализировать его с помощью sed.

Он может выглядеть, например, например:

#!/bin/bash
os=$(lsb_release -rs)
echo "$os"
if [[ "$os" = "16.04" ]] ; then
    echo "g"
elif [[ "$os" = "14.04" ]] ; then
    echo "b"
else
    echo "c"
fi

С другой стороны, для сравнения одной переменной с несколькими значениями case может быть красивее:

#!/bin/bash
os=$(lsb_release -rs)
echo "$os"
case "$os" in
    "16.04") echo "g" ;;
    "14.04") echo "b" ;;
    *) echo "c" ;;
esac
6
ответ дан 22 May 2018 в 13:00

В Bash's test (синоним для [ ... ]), а также для обычно предпочтительных [[ ... ]] выражений вы должны отделить все аргументы и операторы пробелами.

Кроме того, вы всегда должны цитируйте свои переменные. Также рекомендуется использовать отступы, чтобы сделать ваш код более удобным для чтения и использовать синтаксис подстановки нового стиля $(...) вместо `...`.

О, а lsb_release имеет -s или --short, чтобы опустить первый столбец, вам не нужно анализировать его с помощью sed.

Он может выглядеть, например, например:

#!/bin/bash os=$(lsb_release -rs) echo "$os" if [[ "$os" = "16.04" ]] ; then echo "g" elif [[ "$os" = "14.04" ]] ; then echo "b" else echo "c" fi

С другой стороны, для сравнения одной переменной с несколькими значениями case может быть красивее:

#!/bin/bash os=$(lsb_release -rs) echo "$os" case "$os" in "16.04") echo "g" ;; "14.04") echo "b" ;; *) echo "c" ;; esac
6
ответ дан 17 July 2018 в 20:25

В Bash's test (синоним для [ ... ]), а также для обычно предпочтительных [[ ... ]] выражений вы должны отделить все аргументы и операторы пробелами.

Кроме того, вы всегда должны цитируйте свои переменные. Также рекомендуется использовать отступы, чтобы сделать ваш код более удобным для чтения и использовать синтаксис подстановки нового стиля $(...) вместо `...`.

О, а lsb_release имеет -s или --short, чтобы опустить первый столбец, вам не нужно анализировать его с помощью sed.

Он может выглядеть, например, например:

#!/bin/bash os=$(lsb_release -rs) echo "$os" if [[ "$os" = "16.04" ]] ; then echo "g" elif [[ "$os" = "14.04" ]] ; then echo "b" else echo "c" fi

С другой стороны, для сравнения одной переменной с несколькими значениями case может быть красивее:

#!/bin/bash os=$(lsb_release -rs) echo "$os" case "$os" in "16.04") echo "g" ;; "14.04") echo "b" ;; *) echo "c" ;; esac
6
ответ дан 23 July 2018 в 21:05

Другие вопросы по тегам:

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