1 votes

Comment exécuter la commande "source" à l'intérieur d'un script shell, puis stocker la sortie de la commande source dans une variable à l'intérieur du script shell?

J'ai écrit un script shell (appelé profile.sh) pour récupérer les valeurs de température du MPSoC Android. Séparément, j'ai trouvé un script shell qui récupère les FPS d'une application sur le système Android comme fourni ici : https://github.com/NasdaqGodzilla/GetFPS

Pour obtenir les FPS, je dois exécuter le script shell (get_fps.sh) comme mentionné dans https://github.com/NasdaqGodzilla/GetFPS en utilisant la commande suivante :

source get_fps.sh

Cependant, je veux obtenir la sortie des FPS en appelant le get_fps.sh dans mon autre script shell (profile.sh) et ensuite stocker la sortie dans une variable pour pouvoir l'écrire dans un fichier csv.

Mon script shell (profile.sh) est le suivant :

#!/system/bin/sh
echo "Lecture de la puissance et de la température commencée...."

ini_signal="echo 1 > /data/local/tmp/signal.txt"
exec_signal=$(eval $ini_signal)

signal="cat /data/local/tmp/signal.txt"
exec_signal=$(eval $signal)

nom_fichier=profile.csv
heure_actuelle=$(date "+%T")
nouveau_nomFichier=$heure_actuelle.$nom_fichier

while [[ $exec_signal != "0" ]]
do

TEMP_0="cat /sys/class/thermal/thermal_zone0/temp"
TEMP_1="cat /sys/class/thermal/thermal_zone1/temp"
TEMP_2="cat /sys/class/thermal/thermal_zone2/temp"
TEMP0=$((OUT_TEMP0 / 100))
TEMP1=$((OUT_TEMP1 / 100))
TEMP2=$((OUT_TEMP2 / 100))
FPS=[OBTENIR LA SORTIE DE source get_fps.sh]

echo $TEMP0,$TEMP1,$TEMP2,$FPS >> /data/local/tmp/$nouveau_nomFichier

signal="cat /data/local/tmp/signal.txt"
exec_signal=$(eval $signal)
sleep 0.2

done

0voto

Somdip Dey Points 111

Donc, pour exécuter le script get_fps.sh de mon profile.sh voici le code suivant :

#!/system/bin/sh
echo "démarrage de la lecture de la puissance et de la température...."

ini_signal="echo 1 > /data/local/tmp/signal.txt"
exec_signal=$(eval $ini_signal)

signal="cat /data/local/tmp/signal.txt"
exec_signal=$(eval $signal)

file_name=profile.csv
current_time=$(date "+%T")
new_fileName=$current_time.$file_name

while [[ $exec_signal != "0" ]]
do

TEMP_0="cat /sys/class/thermal/thermal_zone0/temp"
TEMP_1="cat /sys/class/thermal/thermal_zone1/temp"
TEMP_2="cat /sys/class/thermal/thermal_zone2/temp"
TEMP0=$((OUT_TEMP0 / 100))
TEMP1=$((OUT_TEMP1 / 100))
TEMP2=$((OUT_TEMP2 / 100))
FPS=$(source get_fps.sh)

echo $TEMP0,$TEMP1,$TEMP2,$FPS >> /data/local/tmp/$new_fileName

signal="cat /data/local/tmp/signal.txt"
exec_signal=$(eval $signal)
sleep 0.2

done

Fondamentalement, j'exécute le get_fps.sh et je stocke la valeur de sortie dans une variable nommée FPS comme suit :

FPS=$(source get_fps.sh)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X