如何整理並列印多個格式化文件?

如何整理並列印多個格式化文件?

我有一個設備/sys/bus/iio/devices/iio:device0/,並且設備有很多文件,例如,,in_current0_raw...我想在終端中定期打印它們。我嘗試過的方法不起作用:in_current0_mean_rawin_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:

答案1

在 shell 中執行watch命令,因此您需要引用兩次,或使用開關-x(如果您不依賴 shell 語法)。但是,您似乎想cat ...定期運行並使用其輸出作為參數printf,在這種情況下您應該使用命令替換。這意味著您不能使用-x,而是必須用單引號將該命令替換為外殼,然後讓watch我們呼叫外殼來處理它。就像是:

watch 'printf "%-20s: %4.10f" "in_current0_raw" "$(cat "${DEVICE_PATH}/in_current0_raw")"'

但是,這意味著它將DEVICE_PATH由不同的 shell 擴展,因此應該在運行之前將其匯出watch

export DEVICE_PATH
watch 'printf "%-20s: %4.10f" "in_current0_raw" "$(cat "${DEVICE_PATH}/in_current0_raw")"'

相關內容