echo gammu 环境变量

echo gammu 环境变量

我正在尝试编写一个脚本,该脚本使用一些由短信发送/接收程序 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其完整路径。

相关内容