我有一個設備/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:
答案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")"'