2016-10-25 18 views
-1

Я пишу свой .zshrc. Я хочу, чтобы моя подсказка показывала мой уровень заряда батареи, который хранится в /sys/class/power_supply/BAT0/capacity Я написал функцию, которая примет значение из файла и изменит цвет цифр (зеленый, если он больше 50, оранжевый, если больше 20, . и красный в противном случаеПечать файла в zsh

проблема в том, я получаю это:

/home/user/.zshrc:5: parse error: condition expected: $getPower 

Мой zshrc показывает это для функции $ getPower

3 function getPower() 
4 { 
5  cat /sys/class/power_supply/BAT0/capacity 
6 } 
7 function batteryLeft () 
8 { 
9  if [[ getPower > 50 ]]; then 
10  echo "Phrase" 
11 fi 
12} 

на ZSH Documentation первый 2 трески e образцы имеют 2 разных способа объявления функции, с ключевым словом function и без нее. Не знаю, в чем проблема.

+2

Это определение функции на или около строки 5 вашего .zshrc? Если нет, пожалуйста, отредактируйте свой вопрос, добавьте все, что находится в строке 5 (и рядом, фактическая проблема может быть в другом месте). Если ваш .zshrc относительно короткий, вы должны просто опубликовать все это. Если это долго, вы должны сделать [минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve), который показывает эту проблему. – 8bittree

+0

Не уверен, что это важно, но ваше сообщение говорит '$ get power' вместо' $ getPower'. –

+0

Кроме того, вам нужны парсеры после имени функции в ZSH, как в Bash? –

ответ

1

Примечательно, что ничего в этом коде не является zsh-specific - все расширения, используемые ниже, присутствуют в ksh93 и bash.

getPower() { cat /sys/class/power_supply/BAT0/capacity; } 

batteryLeft() { 
    if (($(getPower) > 50)); then 
     echo "Phrase" 
    fi 
} 
  • function ключевого слово делает ваш код несовместим с базовым-POSIX оболочками, а не добавляя никаких преимуществ перед совместимым синтаксисом. Избегайте этого в качестве хорошей практики.
  • К запустите свою функцию и, таким образом, будете работать на ее выходе, вам потребуется подстановка команды, например $().
  • Чтобы работать сравнение числовой, а не сравнение строк, вам необходимо либо использовать (()) вместо [[ ]] или использовать -gt вместо >. (Это является несовместимым с базовым POSIX - вам нужно будет использовать [ "$(getPower)" -gt 50 ] для работы с другими оболочками, но также имеет компенсирующие преимущества).
+0

Одно расширение 'zsh', которое * будет * полезно здесь заменить' cat' '' 'для чтения файла без запуска нового процесса. – chepner

+0

Как в 'echo

+0

@TimPalmer, нет, просто '