Environment-Variables

echo gammu 環境變數

  • February 16, 2018

我正在嘗試編寫一個腳本,該腳本使用一些由 sms 發送/接收程序 gammu 設置的環境變數。這些變數是在接收/發送消息時設置的,否則無法訪問。這意味著腳本必須由守護程序執行才能使用這些變數。這不是問題,但實際上可以訪問這些!這是我試圖從 withing 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。如何獲取儲存在這些變數中的值?

你的腳本可以做

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其完整路徑。

引用自:https://unix.stackexchange.com/questions/424617