Bash -f 检查 /sys/class/<device>/

Bash -f check /sys/class/<device>/

我正在尝试制作监控笔记本电脑 (T480) 电池的脚本。有2个电池,内部和外部。充电时外部信息似乎消失了capacity

/sys/class/power_supply/BAT0/capacity

问题

我检查了充电情况,如果文件存在,问题是它通过 -f 丢失 capacity,它是 ASCII text 所以应该不是问题.

脚本

我也试过-e-d-c,但是没有成功。

#!/bin/bash
...

[[ -f /sys/class/power_supply/BAT0/capacity ]] && {
    EXTERNAL="$(cat /sys/class/power_supply/BAT0/capacity)" 
   ...some logic
}
..

正在将我的 转换为答案


/sys/class/power_supply/BAT0 是一个符号链接,如 ls -lta:

的输出所示
root@deb:~# cd /sys/class/power_supply/
root@deb:/sys/class/power_supply# ls -tla
total 0
lrwxrwxrwx  1 root root 0 May 21 14:02 BAT0 -> ../../devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0A:00/power_supply/BAT0
lrwxrwxrwx  1 root root 0 May 21 14:02 ADP0 -> ../../devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00/power_supply/ADP0
drwxr-xr-x 48 root root 0 May 21 14:02 ..
drwxr-xr-x  2 root root 0 May 21 14:02 .
root@deb:/sys/class/power_supply#

Obnoxious screen shot

而不是使用 -f 标志:

True if file exists and is a regular file.

由于您正在处理符号链接,我建议-L 标记 which

True if file exists and is a symbolic link.