/etc/rc.d/rc.M: line 135: [: too many arguments [OK]

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
raffaele181188
Packager
Packager
Messaggi: 789
Iscritto il: ven 7 set 2007, 21:40
Nome Cognome: Raffaele
Slackware: current
Kernel: 2.6.29.6
Desktop: KDE 4.3
Distribuzione: Ubuntu
Località: DearSkin (FG)

/etc/rc.d/rc.M: line 135: [: too many arguments [OK]

Messaggio da raffaele181188 »

Codice: Seleziona tutto

/etc/rc.d/rc.M: line 135: [: too many arguments
Mi appare ad ogni boot, ho una 12.2 installata da dodici ore, e questo è l'rc.M, non manomesso in alcun modo.
Non è pericoloso: non mi rallenta il boot e non mi fa nessun casino con le icone o con il resto dell'inizializzazione del sistema. Ma è un errore e quindi lo segnalo per vedere se sono l'unico.

Non so cosa pensare

Codice: Seleziona tutto

#less /etc/rc.d/rc.M

#ed è
if [ -r ${theme_dir}/icon-theme.cache ]; then
Siamo in un for theme_dir in /usr/share/icons/* ; do
Ho già chiesto in "Come aggiornare dalla 12.1 alla 12.2", ma visto che me lo faceva pure la 12.1 ho ritenuto opportuno aprire un nuovo thread, con un titolo più significativo
Ultima modifica di raffaele181188 il sab 14 feb 2009, 12:48, modificato 1 volta in totale.

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: /etc/rc.d/rc.M: line 135: [: too many arguments

Messaggio da targzeta »

Non è che la directory "for_theme" contiene uno spazio nel suo nome no? In quel caso dovresti quatorare in questo modo

Codice: Seleziona tutto

if [ -r "${theme_dir}"/icon-theme.cache ]; then
Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
raffaele181188
Packager
Packager
Messaggi: 789
Iscritto il: ven 7 set 2007, 21:40
Nome Cognome: Raffaele
Slackware: current
Kernel: 2.6.29.6
Desktop: KDE 4.3
Distribuzione: Ubuntu
Località: DearSkin (FG)

Re: /etc/rc.d/rc.M: line 135: [: too many arguments

Messaggio da raffaele181188 »

:thumbright: Con i doppi apici funziona alla grande. Il problema sono gli spazi nel nome di una directory, come dicevi tu. Ma non credo fosse una mia modifica
Puoi dare un ocio anche al tuo rc.M, che magari si manda una mail... La directory l'ho scaricata da Internet, e poteva capitare a qualcun altro... Visto che te ne intendi di bash scripting mi dici se, in un comando subito successivo tipo /usr/bin/gkt-icon-cache [...] ${theme_dir} è necessaria la stessa cosa? Nel blocco for citato, $theme_dir viene usato spesso come argomento, e mi pare non venga mai quotato

Offtopic: La difficoltà nel gestire gli spazi nei nomi mi aveva fatto abbandonare la guida sul bash scripting :D :D :D Due domande:
1-Come faccio a stampare a video, poniamo, la n-esima riga di un file di testo? nl va bene? Poi devo grep qualcosa? :oops: Ho dovuto usare Kwrite dstavolta!!! :oops: :oops:
2-Che differenza c'è tra ${theme_dir} e $theme_dir?
3-Come si fanno gli apici al contrario (quelli che si usano per sostituire l'output di un comando) e come si chiamano in lingua italiana e inglese?

Avatar utente
m0rdr3d
Linux 2.x
Linux 2.x
Messaggi: 404
Iscritto il: dom 24 dic 2006, 13:40
Slackware: Slackware64-current
Kernel: 3.4.*
Desktop: KDE 4.8.2

Re: /etc/rc.d/rc.M: line 135: [: too many arguments

Messaggio da m0rdr3d »

Per la terza domanda ti rimando al link http://www.pietrodigiorgio.it/343/la-ta ... -di-linux/
Comunque, nel caso specifico, se hai una tastiera italiana la combinazione di tasti è AltGr + '

Avatar utente
raffaele181188
Packager
Packager
Messaggi: 789
Iscritto il: ven 7 set 2007, 21:40
Nome Cognome: Raffaele
Slackware: current
Kernel: 2.6.29.6
Desktop: KDE 4.3
Distribuzione: Ubuntu
Località: DearSkin (FG)

Re: /etc/rc.d/rc.M: line 135: [: too many arguments

Messaggio da raffaele181188 »

m0rdr3d ha scritto:Per la terza domanda ti rimando al link http://www.pietrodigiorgio.it/343/la-ta ... -di-linux/
Comunque, nel caso specifico, se hai una tastiera italiana la combinazione di tasti è AltGr + '
Che figata!!! :thumbright:

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: /etc/rc.d/rc.M: line 135: [: too many arguments

Messaggio da targzeta »

Codice: Seleziona tutto

too many arguments
significa "troppi argomenti", dato che il test '-r' vuole solo 1 argomento, è abbastanza evidente che c'era qualche spazi di troppo :).
raffaele181188 ha scritto:...
Puoi dare un ocio anche al tuo rc.M, che magari si manda una mail...
Il mio rc.M è mio, nel senso che non è quello orginale, quello non lo installo mai.
raffaele181188 ha scritto:...
..in un comando subito successivo tipo /usr/bin/gkt-icon-cache ${theme_dir} è necessaria la stessa cosa? Nel blocco for citato, $theme_dir viene usato spesso come argomento, e mi pare non venga mai quotato
la bash spezza un argomento in parole usando la variabile d'ambiente 'IFS' (input filed separator), se, com'è di default, la variabile contiene ' \t\n' allora la bash spezzerà l'input ogni volta che incontrerà: lo spazio, una tabulazione, una nuova riga. Detto questo è ovvio che, a meno di modificare la variabile IFS, ogni volta che si usano variabili la quale espansione può produrre uno di questi caratteri, è bene quotarla per impedire alla bash di separare il contenuto.

Offtopic:
raffaele181188 ha scritto:Offtopic: ...
1-Come faccio a stampare a video, poniamo, la n-esima riga di un file di testo? nl va bene? Poi devo grep qualcosa? :oops: Ho dovuto usare Kwrite dstavolta!!! :oops: :oops:
Offtopic: La prima cosa che mi viene in mente è:

Codice: Seleziona tutto

sed -n numero_riga'{p;q;}'
raffaele181188 ha scritto:...
2-Che differenza c'è tra ${theme_dir} e $theme_dir?
Nessuna, si preferisce la prima per due ragioni:
  • usando quella forma emacs può usare l'espansione interna per i nomi, così non sbagli nel scrivere il nome di variabile
  • se devi concatenare il nome della variabile ad un altra cosa, non è detto che la shell capisca che vuoi fare. Con:

    Codice: Seleziona tutto

    ${theme_dir}casa
    è chiaro che la variabile si chiama "theme_dir" mentre con:

    Codice: Seleziona tutto

    $theme_dircasa
    no.
raffaele181188 ha scritto:...
3-Come si fanno gli apici al contrario (quelli che si usano per sostituire l'output di un comando) e come si chiamano in lingua italiana e inglese
Dipende dalla configurazione del sistema comunque generalmente con la combinazione Alt_Gr+'

Comunque se vuoi imparare lo scripting bash devi fare solo tre cose IMHO:
  • leggerti almeno una volta tutto il man della bash (eventualmente anche articoli che trattano dello scripting bash...ma il man va saputo)
  • leggere i manuali dei comandi che ti servono (vedi nl citato da te)
  • provare, provare e riprovare, pensando sempre..."come posso renderlo più semplice è veloce...quale algoritmo sarebbe il migliore e come lo si implementa?"
[/offtopic]

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: /etc/rc.d/rc.M: line 135: [: too many arguments

Messaggio da Mario Vanoni »

Per la seconda domanda:

se VARIABILE non viene concatenata
$VARIABILE e ${VARIABILE} si equivalgono
ma
$VARIABILE+quello_che_vuoi e` equivoco
${VARIABILE}+quello_che_vuoi e` chiaro
dipende molto dalla shell usata,
anche se tutte dichiarano essere Bourne compatibili

Se concateni, usa _sempre_ ${VARIABILE}


Il mio rc.M non ha "", oriiginale dal DVD.iso,
nessun errore, mistero informatico.

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: /etc/rc.d/rc.M: line 135: [: too many arguments

Messaggio da targzeta »

Mario Vanoni ha scritto:...nessun errore, mistero informatico.
Nessun mistero, si vede che tu non hai scaricato directory il cui nome contiene degli spazi :D

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
raffaele181188
Packager
Packager
Messaggi: 789
Iscritto il: ven 7 set 2007, 21:40
Nome Cognome: Raffaele
Slackware: current
Kernel: 2.6.29.6
Desktop: KDE 4.3
Distribuzione: Ubuntu
Località: DearSkin (FG)

Re: /etc/rc.d/rc.M: line 135: [: too many arguments

Messaggio da raffaele181188 »

@Mario
L'errore me lo dava perchè io ho un tema di icone per KDE chiamato Crystal\ Diamonds\ For\ Slackware. Usando Fluxbox non potevi avere il mio problema...
Mando una mail a Pat
Offtopic: Quindi mi conviene usare sempre ${var} come faccio in php :thumbright: Meglio così!!! Grazie a tutti

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: /etc/rc.d/rc.M: line 135: [: too many arguments

Messaggio da conraid »

raffaele181188 ha scritto:@Mario
L'errore me lo dava perchè io ho un tema di icone per KDE chiamato Crystal\ Diamonds\ For\ Slackware. Usando Fluxbox non potevi avere il mio problema...
Mando una mail a Pat
Offtopic: Quindi mi conviene usare sempre ${var} come faccio in php :thumbright: Meglio così!!! Grazie a tutti
1) diffida delle cose che usano spazio nei nomi di files o directory
2) ${VAR} non ti risolve il problema, devi "quotare" come ti ha detto spina, cioè "$VAR" o "${VAR}"

Avatar utente
raffaele181188
Packager
Packager
Messaggi: 789
Iscritto il: ven 7 set 2007, 21:40
Nome Cognome: Raffaele
Slackware: current
Kernel: 2.6.29.6
Desktop: KDE 4.3
Distribuzione: Ubuntu
Località: DearSkin (FG)

Re: /etc/rc.d/rc.M: line 135: [: too many arguments [OK]

Messaggio da raffaele181188 »

Io diffido nel senso che non do mai alle directory nomi con gli spazi. Ma se scarico e ci sono... Poi può sempre capitare se si è abituati a lavorare in init4 (con filemanager grafici) di usare gli spazi nei nomi; per me (anche se frutto di cattiva abitudine) resta una svista di rc.M, quindi l'ho segnalata

Per la "quotazione" ho capito qual era il problema eh eh. E me lo risolvono gli apici doppi. Però avevo anche chiesto la differenza tra ${var] e $var, e dopo le spiegazioni di spina e mario ho deciso di usare sempre ${var} per non andare incontro a errori stupidi

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: /etc/rc.d/rc.M: line 135: [: too many arguments [OK]

Messaggio da Mario Vanoni »

raffaele181188 ha scritto: Però avevo anche chiesto la differenza tra ${var] e $var, e dopo le spiegazioni di spina e mario ho deciso di usare sempre ${var} per non andare incontro a errori stupidi
Una prova di quanto bash(1) non sia affidabile:

A=eee
echo $A
eee
echo $Aeee

echo ${A}eee
eeeeee
echo $A.eee
eee.eee
echo ${A}.eee
eee.eee

Rispondi