Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    [bash scripting] leggere correttamente nomi file con spazi

    sto finendo uno script e devo consegnarlo stasera.. quindi vi prego di rispondere il più in fretta possibile....

    se l'utente lancia

    mioscript dir/*

    e nella dir ho un file chiamato "file con spazi"

    all'interno dello script mi viene letto come
    "fil" "con" "spazi"....

    e naturalmente quando vado ad accedervi mi da errore...

    come posso fare per leggerlo correttamente?

    Se è complicato ditemi almeno che è complicato e datemi qualche indicazione

    spero sia una cazzata


  2. #2
    se non posti il codice è un po difficile dirti dove sistemare ...

    cmq se ad esempio fai tutto dentro un ciclo for e tiri fuori l'elenco con un ls o con un find ... e la variabile nella quale inserisci la riga si chiama FILE ...

    ti basta fare

    nomecomando "$FILE"

    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  3. #3
    non ho postato il codice perchè mi bastava un'indicazione...

    in ogni caso... all'inizio del codice mi separo i parametri dalle opzioni (che per requistito devono poter essre mescolati ) e mi creo una lista di file (o directory) che poi mi porto dietro, modificandola, per tutto lo script....

    in secondo luogo le directory che prendo così possono essere "esplose" per elaborare i file al lroo interno.. quindi lì (fatto con un ls naturalmente) si ripresenta il problema)

    non ho capito il tuo suggerimnto.. o tu non hai capito me: almeno iniziamente questo file con spazio posso riceverlo da linea di comando...

  4. #4
    for FILE in `ls $PATH`; do
    [ test -x "$FILE" ] && echo "$FILE è eseguibile!" || echo "$FILE non è eseguibile";
    done

    lasciando perdere la correttenza sintattica del for perché non ho minimamente provato e non mi interessa che funzioni in se ...

    se vedi ... nel test per vedere se è eseguibile o meno metto il percorso, ovvero la riga dell'elenco che mi restituisce ls, tra apici in modo che venga interpretato come

    [ test -x "/directory con spazi/file con spazi" ]

    invece che come

    [ test -x /directory con spazi/file con spazi ]

    che gli da decisamente fastidio
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  5. #5
    ti ripeto che non faccio ls-- ma mi arriva da riga di comando.. è quello il guaio...

    se faccio

    for file in $*
    do
    echo $file
    done

    mi stampa

    file
    con
    spazi


  6. #6
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    [QUOTE]Originariamente inviato da }gu|do[z]{®©
    codice:
    for file in "$*"
    do
    echo $file
    done
    eventualmente valuta anche "$@"
    in luogo di "$*".

    man bash

    ciao
    slack? smack!

  7. #7
    se ti dicessi che ti amo sarebbe riduttivo

    "$@" va

    ora devo "solo" applicare la cosa a tutto lo script


  8. #8
    hum.. ma una volta che l'ho preso così.. come lo salvo in una lista assieme ad altri file facendo in modo che preservi il nome "intero"...?


  9. #9
    considera anche l'opportunita' di portarti dietro le informazioni come array

    codice:
    #!/bin/bash
    
    c[1]="pippo pluto"
    c[2]="batman robin"
    c[3]="bene male"
    c[4]="altro file con spazi"
    
    for i in `seq 1 ${#c[*]}`; 
    do
            echo ${c[i]}
    done
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  10. #10
    Originariamente inviato da }gu|do[z]{®©
    ti ripeto che non faccio ls-- ma mi arriva da riga di comando.. è quello il guaio...

    se faccio

    for file in $*
    do
    echo $file
    done

    mi stampa

    file
    con
    spazi

    ma looool che sono fesso

    cmq che differenza pratica c'è tra $* e $@
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.