在 zsh 中打印文件

Print a file in zsh

我正在写我的 .zshrc。我希望我的提示显示存储在 /sys/class/power_supply/BAT0/capacity 我编写了一个函数,它将从文件中获取值并更改数字的颜色(如果大于 50 则为绿色,如果大于 20 则为橙色,否则为红色。

问题是我得到这个:

/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 个代码示例有 2 种不同的函数声明方式,一种带有 function 关键字,另一种不带。不确定是什么问题。

值得注意的是,这段代码中没有任何内容是特定于 zsh 的——下面使用的所有扩展都存在于 ksh93 和 bash 中。

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

batteryLeft() {
    if (( $(getPower) > 50 )); then
        echo "Phrase"
    fi
}
  • function 关键字使您的代码与基线-POSIX shell 不兼容,同时与兼容的语法相比没有任何优势。作为一种良好做法,请避免使用它。
  • 为了运行你的函数,从而对其输出进行操作,你需要一个命令替换,比如$().
  • 要运行进行数字比较而不是字符串比较,您需要使用(( ))代替[[ ]] ,或使用 -gt 代替 >。 (这个 与基线 POSIX 不兼容——你需要使用 [ "$(getPower)" -gt 50 ] 来与其他 shell 一起工作——但也有补偿优势。