Fedora Online Forum

Il forum della comunità italiana di Fedora

#1 17-10-2015 21:10:09

romulus
Pinguino avanzato
Da Roma
Registrato: 25-06-2010
Messaggi: 339

[risolto] bash: array associativi: non riesco a trovare l'errore

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=("[email protected]")
    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 [email protected] ;;
    88		-r | --radio) shift ; radio [email protected] ;;
    89		-R | --replay) shift ; replay [email protected] ;;
    90		-l | --log) shift ; log_cleanup [email protected] ;;
    91		-s | --save) shift ; registra [email protected] ;;
    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  sad

Ultima modifica di romulus (19-10-2015 10:33:07)


Assioma di R.: Ci sono più bit in un byte di quanti tu ne riesca a contare.
Avatar by manuoceane from Tux Factory

Non in linea

#2 17-10-2015 22:49:08

frafra
Amministratore
Da Trondheim (Norvegia)
Registrato: 14-05-2014
Messaggi: 2'358
Sito web

Re: [risolto] bash: array associativi: non riesco a trovare l'errore

Ciao,
non puoi definire una funzione vuota in quel modo. Devi mettere almeno un comando. Ad esempio:

function radio () { :; }

Non in linea

#3 19-10-2015 10:32:35

romulus
Pinguino avanzato
Da Roma
Registrato: 25-06-2010
Messaggi: 339

Re: [risolto] bash: array associativi: non riesco a trovare l'errore

?
Quello sono io che sto cercando di ricordare chi/come/dove/quando/perché, ma soprattutto a cosa pensavo..... :wall: :wall: :wall:

grazie fra.
:cin: :cin: :cin:


Assioma di R.: Ci sono più bit in un byte di quanti tu ne riesca a contare.
Avatar by manuoceane from Tux Factory

Non in linea

Piè di pagina