SMS 송수신 프로그램인 gammu에서 설정한 일부 환경 변수를 사용하는 스크립트를 작성하려고 합니다. 이러한 변수는 메시지를 받거나 보낼 때 설정되며 그렇지 않은 경우에는 액세스할 수 없습니다. 이는 이러한 변수를 사용하려면 데몬이 스크립트를 실행해야 함을 의미합니다. 실제로 이것들에 접근하는 것은 문제가 되지 않습니다! 다음은 gammu에서 실행하려는 샘플 스크립트입니다.
#!/bin/sh
for i in `seq $SMS_MESSAGES` ; do
echo SMS_"${i}"_NUMBER SMS_"${i}"_TEXT >> smslog.dat
done
기본적으로 수신된 모든 메시지를 기록하고 싶습니다. 그러나 위 스크립트를 사용하면 SMS_1_NUMBER SMS_1_TEXT만 얻을 수 있습니다. 이 변수에 저장된 값을 어떻게 얻을 수 있나요?
답변1
귀하의 스크립트는 할 수 있습니다
env | grep -E '^SMS_.*_(NUMBER|TEXT)=' >>smslog.dat
또는,
i=1
while [ "$i" -le "$SMS_MESSAGES" ]; do
printf 'Message %d number = "%s"\n' "$i" "$( eval printf '%s' "\$SMS_${i}_NUMBER" )"
printf 'Message %d text = "%s"\n' "$i" "$( eval printf '%s' "\$SMS_${i}_TEXT" )"
i=$(( i + 1 ))
done >>smslog.dat
smslog.dat
올바른 위치 에 쓰려면 cd
스크립트에서 올바른 디렉터리를 사용하거나 smslog.dat
전체 경로를 지정하세요.