|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
Schell scripting
Ciao a tutti, avrei bisogno di risolvere un problemino, premetto che vengo dal C e da poco programmo con la shell Unix,
ho necessità di memorizzare in un file temporaneo la dimensione in byte di un file, utilizzo: wc -c file | sed 's/ .*//' > $var, "sed" per eliminare il resto dell'ouput di wc, credo che però così facendo la mia variabile var non contenga un valore utilizzabile come integer, difatti dopo al momento del test tipo [ "$var" -ge 0 ], credo mi dia un errore, sto facendo una cavolata quindi? Oppure esiste una funzione che mi ritorni la dimensione in integer? Che poi la shell non necessita di specificare i tipi come nel C giusto? grazie. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2007
Messaggi: 1779
|
Quote:
Per fare ciò che tu vuoi io farei così: Codice:
var=`wc -c file | sed 's/ .*//'`
__________________
slowped |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
Ora pefetto. L'errore era proprio non utilizzare gli apici inversi per assegnare il valore alla variabile, grazie molte!
ecco il frammento di codice funzionante: [.......] if [ -e "$HOME/ACCESS_LOF_FILE/log_access" ] then c='tempfile' c='wc -c $HOME/ACCESS_LOG_FILE/log_access |sed 's/ .*//'' if [ "$c" \> 100000 ] then c='ls $HOME/ACCESS_LOG_FILE | wc -l | sed 's/ .*//'' rename 's/log_access/log_access'.$c'/' $HOME/ACCESS_LOG_FILE/log_access fi fi [.......] Ciao e grazie ancora. ------- |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:56.