Torna indietro   Hardware Upgrade Forum > Software > Programmazione

AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-04-2013, 20:55   #1
massimilianonball
Senior Member
 
L'Avatar di massimilianonball
 
Iscritto dal: Jul 2007
Città: Padova - Latina - Gorizia
Messaggi: 657
[BASH] stringhe composte da più variabili

Ciao ragazzi, non so se è giusto scrivere qui o nella sezione x so linux

Ad ogni modo il mio problema è questo: ho uno script in bash che gira su un server (ubuntu 12.04) che uso x configurare molto velocemente vlc come server di streaming; lo script mi permette di assegnare un valore a delle variabili che poi, compongono la stringa di lancio di vlc.
Per semplicità di esposizione riporto sotto la stringa:

Codice:
cvlc -vvv $budget "$input" --program="$serviceID" dvb://frequency="$frequenza" :dvb-adapter="$adapter" :dvb-bandwidth="$bandwith" --sout="#transcode{vcodec=$video,fps=,vb=$bitrate,scale=$scale,$size,acodec=$audio}:"$output"" $web  2>~/Desktop/vlc.log &
Avrete notato x esempio che le variabili budget o web (e altre), NON sono scritte con le virgolette, come invece dovrebbe essere; se infatti uso nella stringa tutte le variabili virgolettate (es. "$variabile"), la stringa non va.

Se invece uso la stringa come sopra tutto funziona..

Sta cosa mi fa incavolare x 2 motivi:
1. non capisco xké lo script si comporti in questo modo
2. ogni volta che faccio una modifica e aggiungo/tolgo una variabile, iniziano i mal di pancia xké devo capire a quale variabile mettere/togliere le virgolette..

Ultima stranezza:
a volte provo ad inserire TUTTA la stringa in un echo (es. echo "stringa"), x vedere cosa effettivamente mi lancia lo script: il risultato è che la stringa lanciata è LA STESSA sia mettendo le virgolette ad ogni variabile, sia assegnandole come sopra; ma solo in questo modo lo script va..

__________________
CPU Intel Q6600 stepping G0 @ 3.2 - MOBO Gigabyte GA-P35C.DS3R rev 2.1 - RAM Corsair C5 XMS2 4X2GB DDR2 PC6400 - VGA Ati Radeon HD 6870 - DISSIPATORE Zalman CNPS 9700 LED - 3 x HD: 1x [storage] Matrox DIAMONDMAX22 500GB SATA 3.5 720 + 2x raid0 [gaming] Barracuda 7200.10 160GB SATA-II 3.5IN - ALI Corsair HX MODULAR PSU 620W CMPSU-620HXEU
massimilianonball è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2013, 15:48   #2
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Non sono un esperto di Bash ( anzi, lo odio proprio per la sua illogicità ) ma prendi questa parte di comando:
Codice:
--sout="#transcode{vcodec=$video,fps=,vb=$bitrate,scale=$scale,$size,acodec=$audio}:"$output""
Usi due volte di fila " dopo $output .
Potrebbe essere quello?

EDIT: E apri la prima " dopo --sout=
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 21-04-2013, 16:24   #3
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da massimilianonball Guarda i messaggi
Ciao ragazzi, non so se è giusto scrivere qui o nella sezione x so linux

Ad ogni modo il mio problema è questo: ho uno script in bash che gira su un server (ubuntu 12.04) che uso x configurare molto velocemente vlc come server di streaming; lo script mi permette di assegnare un valore a delle variabili che poi, compongono la stringa di lancio di vlc.
Per semplicità di esposizione riporto sotto la stringa:

Codice:
cvlc -vvv $budget "$input" --program="$serviceID" dvb://frequency="$frequenza" :dvb-adapter="$adapter" :dvb-bandwidth="$bandwith" --sout="#transcode{vcodec=$video,fps=,vb=$bitrate,scale=$scale,$size,acodec=$audio}:"$output"" $web  2>~/Desktop/vlc.log &
Avrete notato x esempio che le variabili budget o web (e altre), NON sono scritte con le virgolette, come invece dovrebbe essere; se infatti uso nella stringa tutte le variabili virgolettate (es. "$variabile"), la stringa non va.

Se invece uso la stringa come sopra tutto funziona..

Sta cosa mi fa incavolare x 2 motivi:
1. non capisco xké lo script si comporti in questo modo
2. ogni volta che faccio una modifica e aggiungo/tolgo una variabile, iniziano i mal di pancia xké devo capire a quale variabile mettere/togliere le virgolette..

Ultima stranezza:
a volte provo ad inserire TUTTA la stringa in un echo (es. echo "stringa"), x vedere cosa effettivamente mi lancia lo script: il risultato è che la stringa lanciata è LA STESSA sia mettendo le virgolette ad ogni variabile, sia assegnandole come sopra; ma solo in questo modo lo script va..

Da
http://www.gnu.org/software/bash/man...le-Quotes.html
Quote:
Enclosing characters in double quotes (‘"’) preserves the literal value of all characters within the quotes, with the exception of ‘$’, ‘`’, ‘\’, and, when history expansion is enabled, ‘!’
Ovvero tutti i caratteri tranne $ ` \ ! vengono interpretati letteralmente. In particolare lo spazio viene interpretato come parte della parola e non separatore degli argomenti. Che vuol dire ?

Vuol dire che se io scrivo
Codice:
cvlc -vvv $budget "$input" --program="$serviceID"
cvlc si vede passare 4 parametri, ovvero
-vvv
il contenuto di $budget (non proprio, vedi sotto)
il contenuto di $input
--program=<il contenuto di $serviceID

Se tu scrivi invece
Codice:
cvlc "-vvv $budget $input --program=$serviceID"
Il programma si vede passare un unico agomento, corrispondente alla valutazione di
-vvv $budget $input --program=$serviceID
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2013, 16:13   #4
massimilianonball
Senior Member
 
L'Avatar di massimilianonball
 
Iscritto dal: Jul 2007
Città: Padova - Latina - Gorizia
Messaggi: 657
@kwb: ti sei risposto da solo ..cmq grazie!

Marco grazie mille x il link, non si legge mai abbastanza sull'argomento..
La tua spiegazione è stata molto valida: vedo di mettere in pratica il tutto appena possibile e subito dopo vi relaziono sul risultato, x adesso grazie!!
__________________
CPU Intel Q6600 stepping G0 @ 3.2 - MOBO Gigabyte GA-P35C.DS3R rev 2.1 - RAM Corsair C5 XMS2 4X2GB DDR2 PC6400 - VGA Ati Radeon HD 6870 - DISSIPATORE Zalman CNPS 9700 LED - 3 x HD: 1x [storage] Matrox DIAMONDMAX22 500GB SATA 3.5 720 + 2x raid0 [gaming] Barracuda 7200.10 160GB SATA-II 3.5IN - ALI Corsair HX MODULAR PSU 620W CMPSU-620HXEU
massimilianonball è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Le dimensioni contano? C'è un TV ...
Vast prosegue la costruzione della stazi...
Chiarito cosa è successo al satel...
Il TAR annulla Bologna Città 30. ...
Laptop con chip NVIDIA da marzo? Emergon...
Costruito in casa, più veloce di ...
Il nuovo Galaxy Book 6 Pro costa il 25% ...
C'è un boom del mercato dei data ...
OVHcloud annuncia la disponiiblità...
Il Wi-Fi 7 ha un nuovo re: da ASUS arriv...
In arrivo l'auto "Frankenstein"...
Chip NVIDIA H200 in Cina? 'Come vendere ...
iPhone 16 torna super conveniente: ora c...
Offerte Amazon pazzesche: tech, smartpho...
Ubisoft annuncia l'arrivo dei 60 fps per...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:20.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v