에 장치가 있고 장치에 , , ... /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
watch
셸에서 명령을 실행하므로 두 번 인용하거나 스위치를 사용해야 합니다 ( -x
셸 구문을 사용하지 않는 경우). 그러나 cat ...
주기적으로 실행하고 그 출력을 에 대한 인수로 사용하려는 것 같습니다 printf
. 이 경우 다음을 사용해야 합니다.명령 대체. 즉 -x
, 을 사용할 수 없지만 대신 외부 쉘에 대한 명령 대체를 작은따옴표로 묶어서 watch
쉘 호출이 이를 처리하도록 해야 합니다. 다음과 같은 것 :
watch 'printf "%-20s: %4.10f" "in_current0_raw" "$(cat "${DEVICE_PATH}/in_current0_raw")"'
그러나 이는 DEVICE_PATH
다른 셸에 의해 확장되므로 다음을 실행하기 전에 내보내야 함을 의미합니다 watch
.
export DEVICE_PATH
watch 'printf "%-20s: %4.10f" "in_current0_raw" "$(cat "${DEVICE_PATH}/in_current0_raw")"'