我有一个设备,并且设备有很多文件,/sys/bus/iio/devices/iio:device0/
例如in_current0_raw
,,...我想在终端中定期打印它们。我尝试过的不起作用:in_current0_mean_raw
in_current0_scale
#!/bin/bash
DEVICE_PATH=/sys/bus/iio/devices/iio:device0/
CMD=$(cat ${DEVICE_PATH}in_current0_raw)
watch -n 1 printf '%-20s: %4.10f' "in_current0_raw" "cat ${DEVICE_PATH}in_current0_raw"
它打印:
%4.10f :in :cat :/sys/bus/iio/devices/iio:device0/in_current0_mean_raw:
在
watch
shell 中运行命令,因此您需要引用两次,或使用-x
开关(如果您不依赖 shell 语法)。但是,您似乎希望cat ...
定期运行并将其输出用作 的参数printf
,在这种情况下您应该使用命令替换。这意味着您不能使用-x
,而是必须用单引号将该命令替换为外壳,并让外壳watch
的调用来处理它。就像是:但是,这意味着
DEVICE_PATH
它将由不同的 shell 扩展,因此应该在运行之前将其导出watch
: