Io ottengo URL doppi
~ $ project_url=($(echo $(boinccmd --get_tasks | grep 'project URL' | awk '{print $3}' )))
~ $ echo ${project_url[@]}
http://setiathome.berkeley.edu/ http://setiathome.berkeley.edu/ http://setiathome.berkeley.edu/ http://setiathome.berkeley.edu/ http://setiathome.berkeley.edu/ http://setiathome.berkeley.edu/ http://universeathome.pl/universe/ http://universeathome.pl/universe/ http://universeathome.pl/universe/ http://universeathome.pl/universe/ http://universeathome.pl/universe/ http://universeathome.pl/universe/ http://universeathome.pl/universe/ http://universeathome.pl/universe/ http://wuprop.boinc-af.org/ http://setiathome.berkeley.edu/ http://setiathome.berkeley.edu/ http://setiathome.berkeley.edu/ http://setiathome.berkeley.edu/ http://universeathome.pl/universe/ http://setiathome.berkeley.edu/
Aggiungici un "uniq -u" per scrupolo
project_url=($(echo $(boinccmd --get_tasks | grep 'project URL' | uniq -u | awk '{print $3}')))
il "cut" puoi ometterlo dato che la variabile è all'interno di una matrice e viene salvata solo la stringa (in pratica non tiene conto dello spazio o del "carridge" se c'è)
~ $ echo ${project_url[@]}
http://wuprop.boinc-af.org/ http://universeathome.pl/universe/ http://setiathome.berkeley.edu/
$ echo "#### ${project_url[1]} ####"
#### http://universeathome.pl/universe/ ####
~ $ echo ${project_url[0]}
http://wuprop.boinc-af.org/
~ $ echo ${project_url[1]}
http://universeathome.pl/universe/
~ $ echo ${project_url[2]}
http://setiathome.berkeley.edu/
I cicli "for" in bash possono essere scritti anche con la sintassi del C , ma puoi utilizzare quella sua... utilizzando l'intera ampiezza della matrice
for i in "${URL[@]}" ; do
<codice>
done
E i doppi apici nelle variabili sono sempre ben accetti in caso nella variabile ci siano parole divise dallo spazio
A="Oh My Boinc ! "
echo "${A}"
anche nel paragone delle stringhe...
echo $($boinccmd --get_simple_gui_info)`
potrebbe restituire un "Can't connect to localhost" se cerca un servizio ... anche se poi riporta un eventuale status "1"
Devia lo standard error ...
echo $($boinccmd --get_simple_gui_info 2>/dev/null)
Nell' elenco progetti , se devi utilizzare uno o "N" progetti specifici puoi utilizzare "case" "in un ciclo degli URL trovati
Quindi puoi adattarlo per uno o più progetti
for URL in ${project_url[@]}" ; do
case "${URL}" in
"${gpugrid_url}" ) <codice per questo url>
;;
"${opzionale_altro_URL}") <codice>
;;
[...]
;;
*) < altro codice per tutti gli altri URL non interessati>
;;
esac
done
se i codici sono uguali per tutti si può creare una funzione generale da richiamare ,
funzione1 () {
<codice funzione1 >
}
se "case" richiede prj1+proj2 con funzione1 e prj3 con funzione2
[...]
case "${URL}" in
"${URL1}"|"${URL2}") funzione1
;;
"${URL3}")funzione2
;;
*) <tutto il resto altro codice o funzione >
;;
esac
[...]