echo variável de ambiente gammu

0

Eu estou tentando escrever um script que usa algumas variáveis de ambiente que são definidas pelo programa de envio / recepção sms gammu. Essas variáveis são definidas no momento em que as mensagens são recebidas / enviadas e não são acessadas de outra forma. Isso significa que o script deve ser executado pelo daemon para fazer uso dessas variáveis. Isso não é um problema, mas na verdade, acessando estes! Este é o script de exemplo que estou tentando executar a partir do gammu.

#!/bin/sh
for i in 'seq $SMS_MESSAGES' ; do
        echo SMS_"${i}"_NUMBER SMS_"${i}"_TEXT >> smslog.dat
done

Basicamente eu quero fazer um log de todas as mensagens recebidas. No entanto, com o script acima, tudo que recebo é SMS_1_NUMBER SMS_1_TEXT. Como posso obter os valores armazenados nessas variáveis?

    
por lucian 16.02.2018 / 15:26

1 resposta

2

Seu script poderia fazer apenas

env | grep -E '^SMS_.*_(NUMBER|TEXT)=' >>smslog.dat

Alternativamente,

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

Para garantir que você escreva para smslog.dat no local correto, use cd em seu script no diretório correto ou especifique smslog.dat com seu caminho completo.

    
por 16.02.2018 / 15:38