встроенные условные выражения для присвоения

Batterymon-клон попытки:

Клон BatteryMon, простой апплет GNOME для контроля состояния батареи. Это добавляет поддержку i18n, distutils базирующаяся инфраструктура сборки, и т.д. Домашняя страница исходного программного обеспечения по http://code.google.com/p/batterymon/

PKGBUILD доступен.

2
09.02.2014, 19:11
4 ответа

Так как Zsh zsh, существует загадочный путь:

V=${${VERBOSE#0}:+$FOO}

Это устанавливает V к значению FOO если VERBOSE ненулевое число, и к пустой строке если VERBOSE пусто или 0.

V=${${${VERBOSE/#/a}:#a1}:+foo}

Это устанавливает V к значению FOO если VERBOSE точная строка 1, и к пустой строке иначе.

Теперь забудьте это и используйте ясный синтаксис с if или case.

Если FOO является числовым, можно использовать ?: оператор в арифметическом выражении. Еще случай должен быть числовым также.

((V = VERBOSE ? FOO : 0))
3
27.01.2020, 21:50

Ну, самое близкое, о котором я могу думать, было бы

[[ $VERBOSE == 1 ]] && V="YES" || V="NO"

Например:

$ VERBOSE=0
$ [[ $VERBOSE == 1 ]] && V="YES" || V="NO"; echo $V
NO
$ VERBOSE=1
$ [[ $VERBOSE == 1 ]] && V="YES" || V="NO"; echo $V
YES

Вышеупомянутые работы для удара и zsh (и большинство других оболочек).

3
27.01.2020, 21:50
  • 1
    (большая часть другого оболочки быть ksh. Это ksh синтаксис здесь). –  Stéphane Chazelas 15.02.2014, 22:57

Можно использовать случай / переключатели в Bash для этого также. Просто помните, что они не могут оценить логику:

case "$VERBOSE" in
  1) V="YES" ;;
  *) V="NO"  ;;
esac
3
27.01.2020, 21:50

Конкуренция за самое загадочное:

$ echo ${${(z):-NO YES}[2-!VERBOSE]}
NO
$ VERBOSE=123
$ echo ${${(z):-NO YES}[2-!VERBOSE]}
YES

Или:

$ echo ${${(z):-NO YES}:!!VERBOSE:1}
YES
2
27.01.2020, 21:50
  • 1
    я буду пережевывать их в течение некоторого времени... Спасибо! –  kjo 16.02.2014, 00:08

Теги

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