Scriptare l'analisi: analizzare il contenuto del contenuto nell'arrays

Saluti,

Sto scrivendo un semplice script bash che ha bisogno di analizzare il contenuto di un file in un arrays. Le voci del file sono delimitate da "newline", in modo che il file abbia un aspetto simile:

  • Come eseguire un command più volte, utilizzando la shell bash?
  • #! / bin / sh vs #! / bin / bash per la massima portbilità
  • Qual è la lunghezza massima di una row di command in Mac OS X?
  • Utilizzando shell shell quando si accede a FreeBSD ssh
  • Se rompe qualcosa se io alias ".." essere "cd .."?
  • Processi di background Shell: cosa significano i caratteri nel messaggio di terminazione?
  • path/to/file path/to/other/file 

    Mi piacerebbe analizzare i contenuti e ripetere su di loro. Il mio codice attualmente sembra:

     CONTENT=`cat /path/to/text/file.txt` for PATH in $CONTENT do echo $PATH chmod -R 440 $PATH fi 

    Questo codice funziona ottimamente con un file con terminazioni di linea UNIX. Con un file di text formattato in windows, tuttavia, esso soffoca miseramente. L'istruzione "echo $ PATH" produce il path corretto, ma la chmod non riesce a dire che il file non esiste. La mia capacità è che le windows di Windows non stanno ottenendo il taglio, quindi cerca di modificare un path di file che include un nuovo carattere di linea.

    Ho bisogno di far funzionare questa cosa, indipendentemente dal fatto che il file di destinazione sia stato creato con Unix o Windows linee nuove – ma dato che sono un po 'nuovo per shell scripting non sono tutto così sicuro come farlo.

    Apprezzo il vostro aiuto!

    2 Solutions collect form web for “Scriptare l'analisi: analizzare il contenuto del contenuto nell'arrays”

    Sembra che sia sufficiente rimuovere il return del carrello durante l'elaborazione di each row. Il vero modo semplice è quello di utilizzare l'utility dos2unix , ma se il tuo sistema non lo ha o non lo riesci ad get, puoi eseguire cose simili con tr , ad esempio:

    echo $PATH | tr -d '\r'

    Altre idee, come l'uso di sed , sono disponibili nella voce di Wikipedia .

    EDIT: Vorrei sottolineare che $PATH non è un grande nome di variabile, dato che è senza dubbio impostato dall'ambiente e altri programmi possono dipendere dal suo valore. Dovresti prendere in considerazione la modifica in qualcosa di simile a $CUR_PATH .

    Vorrei solo cambiare la prima row dello script:

    CONTENT=$(tr -d \\r < /path/to/text/file.txt)

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.