Sto cercando di riscrivere uno script che ho scaricato (rainix) e nel contempo prendere dimestichezza con gli array associativi.
di solito in questi casi procedo passo passo verificando di volta il codice scritto/aggiunto/corretto ma stavolto mi sono dato la zappa sui piedi da solo. :wall:
non riesco a trovare l’errore che ho commesso; stavolta quattr’occhi non bastano, ce ne vogliono di più.
il codice è il seguente:
1 #!/bin/bash
2
3 #
4 # Rai environment
5 #
6 declare -A rai_env
7
8 #
9 # RAI home
10 #
11 rai_env[home]="${RAI_HOME:-`xdg-user-dir VIDEOS`/RAI}"
12
13 #
14 # Log dir / file
15 # Record dir
16 #
17 rai_env[vdr]="${rai_env[home]}/vdr"
18 rai_env[ldir]="${rai_env[home]}/log"
19 rai_env[lfile]="${rai_env[ldir]}/$(date +%Y%m%d-%H%M)-$progname.log"
20
21 mkdir -p "${rai_env[vdr]}" "${rai_env[ldir]}" 2>/dev/null
22
23 #
24 # user agent
25 # curl options
26 #
27 rai_env[agent]="`shuf -n 1 ${rai_env[home]}/agent`"
28 curl_opt="--silent --location --user-agent '"${rai_env[agent]}"' $socks"
29
30 export FFREPORT="file=${rai_env[ldir]}/%t-%p.log"
31
32 rai_env[vdr_cmd]="ffmpeg"
33 rai_env[vdr_cmd_opt]="-absf aac_adtstoasc"
34
35 rai_env[tv_link]="http://www.rai.tv/dl/RaiTV/dirette_tv.html"
36 rai_env[tv_cmd]="ffplay"
37 rai_env[tv_cmd_opt]="-infbuf -loglevel info -vf scale=720:404"
38 #-----------------------------------------------------------------------
39 rai_env[replay_link]="http://www.rai.tv/dl/portale/html/palinsesti/replaytv/static/"
40 rai_env[replay_cmd]="smplayer"
41 rai_env[replay_cmd_opt]=""
42 #-----------------------------------------------------------------------
43 rai_env[radio_link]="http://rai.it/dl/portaleRadio/popup/ContentSet-003728e4-db46-4df8-83ff-606426c0b3f5-json.html?jsonp=call"
44 rai_env[radio_cmd]="smplayer"
45 rai_env[radio_cmd_opt]=""
46 #-----------------------------------------------------------------------
47
48 function usage ()
49 {
50 printf "Usage: rainix -t|-r|-R|-l] ....\n"
51 printf " -t|--tv - Diretta TV\n"
52 printf " -r|--radio - Diretta Radio\n"
53 printf " -R|--replay - Rivedi un programma (7gg da oggi)\n"
54 printf " -l|--log - Pulizia log\n"
55 printf " -s|--save - Registra la trasmissione\n"
56 }
57
58
59 function diretta ()
60 {
61 local -a args=("$@")
62 local -i nel=${#args@]}
63 local -i i=0
64
65 while $i -lt $nel ]
66 do
67 printf "%s " ${args$i]}
68 i=$(($i+1))
69 done
70 }
71
72 function radio () { }
73
74 function replay () { }
75
76 function registra () { }
77
78 function log_cleanup () { }
79
80 if $# -lt 1 ]
81 then
82 usage
83 exit
84 fi
85
86 case $1 in
87 -t | --tv) shift ; diretta $@ ;;
88 -r | --radio) shift ; radio $@ ;;
89 -R | --replay) shift ; replay $@ ;;
90 -l | --log) shift ; log_cleanup $@ ;;
91 -s | --save) shift ; registra $@ ;;
92 *) usage ;;
93 esac
e come risultato ottengo:
+ declare -A rai_env
++ xdg-user-dir VIDEOS
+ rai_env[home]=/home/michele/Video/RAI
+ rai_env[vdr]=/home/michele/Video/RAI/vdr
+ rai_env[ldir]=/home/michele/Video/RAI/log
++ date +%Y%m%d-%H%M
+ rai_env[lfile]=/home/michele/Video/RAI/log/20151017-2148-.log
+ mkdir -p /home/michele/Video/RAI/vdr /home/michele/Video/RAI/log
++ shuf -n 1 /home/michele/Video/RAI/agent
+ rai_env[agent]='Mozilla/5.0 (Linux; U; Android 4.4.2; it-it; LG-D802 Build/KOT49I.D80220h) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36'
+ curl_opt='--silent --location --user-agent '\''Mozilla/5.0 (Linux; U; Android 4.4.2; it-it; LG-D802 Build/KOT49I.D80220h) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.1599.103 Mobile Safari/537.36'\'' '
+ export FFREPORT=file=/home/michele/Video/RAI/log/%t-%p.log
+ FFREPORT=file=/home/michele/Video/RAI/log/%t-%p.log
+ rai_env[vdr_cmd]=ffmpeg
+ rai_env[vdr_cmd_opt]='-absf aac_adtstoasc'
+ rai_env[tv_link]=http://www.rai.tv/dl/RaiTV/dirette_tv.html
+ rai_env[tv_cmd]=ffplay
+ rai_env[tv_cmd_opt]='-infbuf -loglevel info -vf scale=720:404'
+ rai_env[replay_link]=http://www.rai.tv/dl/portale/html/palinsesti/replaytv/static/
+ rai_env[replay_cmd]=smplayer
+ rai_env[replay_cmd_opt]=
+ rai_env[radio_link]='http://rai.it/dl/portaleRadio/popup/ContentSet-003728e4-db46-4df8-83ff-606426c0b3f5-json.html?jsonp=call'
+ rai_env[radio_cmd]=smplayer
+ rai_env[radio_cmd_opt]=
main: riga 72: errore di sintassi vicino al token non atteso "}"
main: riga 72: `function radio () { }'
ho provato a commentare/decommentare ogni riga, ma appena arrivo ad usare le funzioni si i… :grrr:
che qualcuno inforchi gli occhiali perché i miei si sono consumati