Chers développeurs,
J'ai un problème avec mon script qui passe d'Android 9 à 10 (appareils d'un Umidigi S3 Pro à un Umidigi F2).
J'ai installé Bosybox App sur le premier et Busybox Magisk module sur le second.
Maintenant le script ne fonctionne pas car la commande :
list=(`busybox find "$dirs" -type f -name *.$ext`)
renvoie un tableau vide.
C'est le script complet :
#!/system/bin/sh
echo
if test "$1" = ""; then
echo "Randomfile script by Uranya <@uranya7x> v1.4 01.01.2021"
echo "Usage:"
echo "sh randomfile.sh <sourcedir> <extension> <destdir>"
exit 1
fi
dirs=$1
ext=$2
dird=$3'/'
dest=$dird'random'
delim1=""
delim2=""
last='last.txt'
# create filename's array
IFS=$'\n'
list=(`busybox find "$dirs" -type f -name *.$ext`)
# count number of files
num=${#list[@]}
# generate random number in range 1-NUM
let "ran=(${RANDOM} % ${num})+ 1"
echo Random from $num files is $ran
sour=${list[ran]}
sourn=${sour#$dirs}
sourn=${sourn:1:${#sourn}}
date=$(date +"%Y.%m.%d %H:%M")
day=$(date +"%d")
hour=$(date +"%H")
minute=$(date +"%M")
message='---------------------------------------\n'$date' - '$num' >>> '$ran'\n'$delim1$sourn$delim2
if ([ "$day" = "01" ] && [[ "$minute" < "29" ]]) || [ ! -f $dird$last ]; then
echo >$dird$last $message
else
sed -i '1i'$message $dird$last
fi
echo $delim1$sourn$delim2
# rename the old file
cp $dest.$ext $dest'_back.'$ext
# copy the file
cat "$sour" >$dest.$ext
echo File copied as $delim1$dest.$ext$delim2
Pouvez-vous m'aider à comprendre pourquoi cela se produit, et comment y remédier ? Merci beaucoup pour votre attention !
0 votes
Après avoir fait quelques tests, j'ai trouvé ceci : ouvrir un terminal privilégié Root et exécuter --- echo
find /storage/7BC3-1805/Music/MP3/Abba -type f -name *.mp3
--- il renvoie deux chaînes contenant les noms des fichiers à l'intérieur de ce dossier, mais en le mettant dans mon script, il continue à retourner un tableau vide, donc le problème n'est pas dans l'accès au dossier, mais dans la syntaxe, je suppose (le code find est à l'intérieur de backticks) donc c'est comme : echo <BT>find..... *.mp3<BT>0 votes
Quel shell exécutez-vous le script ? Android par défaut est mksh (MirBSD korn shell). seul bash supporte les tableaux, définissez shebang à quelque chose comme #!/data/data/com.termux/files/usr/bin/bash
0 votes
@alecxs Merci de l'avoir signalé !