Что означает «[[$ -! = * i *]] && return ”mean?

У меня есть эта строка в моем .bashrc , и я хотел бы знать, что именно это означает

# If not running interactively, don't do anything
[[ $- != *i* ]] && return
22
задан 25 September 2016 в 09:17

3 ответа

  • $- означает 'текущие флаги'.
  • echo $- возвраты "himBH". Это - все значения по умолчанию.
  • так... [[ $- != *i* ]] && return на самом деле делает то, что это говорит выше в комментарии: это проверяет, установлен ли интерактивный флаг. [[И]] делают это булевской переменной, таким образом, это заканчивается в "истинном" или "ложном". "ложь & & возвратитесь", заставляет его пойти "на истинный & & возвратитесь", заставляет его выполнить возврат.

флаги по умолчанию, объясненные более подробно:

ч - для "хеша все": это говорит удару помнить местоположения команд, которые он нашел посредством запросов Вашего ПУТИ.

я для "интерактивного": ввод входа & возвращение вывода.

м для "монитора": это включает управление заданиями

, B для "фигурной скобки, расширяются". Это позволяет Вам использовать расширение фигурной скобки

, H для "истории, расширяются". Это - то, что позволяет Вам повторно выполнить команду из своей истории путем снабжения предисловием ее числа с восклицательным знаком

<час>

Между прочим. Я имею...

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

В основном делает то же, но легче читать, я принимаю.

33
ответ дан 23 November 2019 в 01:33

В основном это означает, "Если флаги оболочки не содержат нижний регистр i, то остановите функцию/сценарий здесь".

[[ ]]

обозначает, что условное выражение в ударе

$-

означает флаги оболочки. Это будет содержать "i", если оболочка будет интерактивной (т.е. можно ввести команды, в противоположность, это выполняется, сценарий)

!=

просто означает "не равный".

*i*

подстановочный шаблон, который соответствует чему-либо содержащему "i"

return

без любых аргументов, просто означает, останавливают выполнение текущей функции или сценария.

&&

логическое И оператор. Выражение справа, в этом случае return, будет только оценено (выполняемое), если выражение слева будет верно . Таким образом на многих языках программирования, a && b сокращение от if a then b - это называют "оценкой короткого замыкания", и она сводит учителей программирования с ума при использовании ее :D

6
ответ дан 23 November 2019 в 01:33

Я предположил бы, что это похоже на это, говорит: если удар не открыт в интерактивной оболочке, то ничего не делайте.

я не знаю целой функции, но существуют, вероятно, команды и набор флагов ниже той строки в случае, если у Вас действительно есть удар открытым в TTY.

2
ответ дан 23 November 2019 в 01:33

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

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