Leggi gli ultimi interventi sul forum
 
You are here: Sky ForumSoftwareProgrammazioneProgrammare in bash
: [1]
Programmare in bash
Programmare in bash
« : May 22, 2008, 02:34:02 pm »

Sto odiando dal profondo la sintassi bash. Non capisco proprio perché si debba a tutti i costi sovvertire la sintassi C. Ad esempio un confronto fra una variabile e una stringa viene fatto così:
Code: (bash) [Select]
#!/bin/bash
$foo="foo" #se metti uno spazio sclera!
if [ "$foo" = "foo" ]; then
echo expression evaluated as true
else
echo expression evaluated as false
fi
Poi c'è da dire che ancora non ho capito come e quando usare le parentesi quadre e le doppie parentesi quadre. Il mettere le virgolette ad una variabile è una porcata. Adesso comprendo il motivo dell'esplosione di Python...  :angry-smiley-055:

P.S.
Il ; delimita le istruzioni su una stessa riga...
« : June 22, 2008, 04:31:34 pm skydiamond »
Re: Programmare in bash
« #1 : May 22, 2008, 03:05:46 pm »

Dai un occhio a questo manuale (è il mio manuale di fiducia...): http://www.pluto.it/ildp/guide/abs.html
Sì ho utilizzato quello finora. Il problema vero è che per fare un cazzo di script escono errori che per uno abituato a programmare in JAVA, in C, in PHP, in Python o qualsiasi altro linguaggio C-Like sono una rottura immensa di "script"...  :bug:
  • Aldo
  • user
  • *
  • Offline Offline
  • : 80
  •  
Re: Programmare in bash
« #2 : May 22, 2008, 03:31:11 pm »

Ciò che rende bash potente secondo me non è tanto il linguaggio in se, ma il fatto che utilizzino gli stessi comandi che si darebbero su una shell per i vari tool di sistema da riga di comando quali awk, grep, diff, sed ed altra roba decisamente poco intuitiva ma comunque molto potente (io non avrei idea di come utilizzarli, ma ho visto script che facevano un sacco di roba usando questi comandi).

Il linguaggio in realtà è troppo poco intuitivo comunque e fa passare la voglia dopo poco. Trovo divertenti solo i vari case-esac, if-fi, ecc...

Astrac - www.astrac.org
Re: Programmare in bash
« #3 : May 22, 2008, 03:37:59 pm »

Non ci crederete ma non riesco a trovare il not di if...
Code: (bash) [Select]
if !["$nomefile" = "script"]; then
if ["$nomefile" != "script"]; then
Danno entrambi errore.  :angry-smiley-055:

Trovato:
Code: (bash) [Select]
if ["$nomefile" -ne "script"]; then
Cribbio! E' per il confronto di interi, mentre per far funzionare if !["$nomefile" = "script"]; then ci vogliono sì le stringhe ma deve essere scritto così:
Code: (bash) [Select]
if [ "$nomefile" != "script" ]; then
« : May 22, 2008, 03:44:07 pm skydiamond »
Re: Programmare in bash
« #4 : May 22, 2008, 04:21:57 pm »

Ora ho il seguente problema. Ho una data fatta così Thu Jun 15 13:23:00 2006 e la devo convertire in dd/mm/aa. Si dovrebbe poter fare con il comando date --date ma non riesco a fargliela "mangiare". Mi dà sempre e comunque errore anche se gliela dò in formato %c (data locale). Ma dico io, per fare stupidaggini ci vogliono ore!  :gmorning:

Lo script di prova:
Code: (bash) [Select]
#!/bin/bash
function converti {
local data=$(perl -e "require 'ctime.pl'; print &ctime($1);")
echo $data
local data2=$(date --date $data +%c)
echo $data2
echo
#echo data
}
#per testare
touch 1150370580.xml
for nomefile in $(ls | sed -e 's/\.[a-zA-Z]*$//'); do
if [ "$nomefile" = "1150370580" ]; then
echo item: $nomefile
converti $nomefile
fi
done
« : May 22, 2008, 04:25:45 pm skydiamond »
Re: Programmare in bash
« #5 : May 23, 2008, 06:01:16 pm »

Per il progetto di real-time avevo la necessita' di manipolare i risultati di un programma che erano su file.


Un file ENORME con migliaia e migliaia di righe...

dovevo estrapolare stringhe, numeri, fare calcoli, etc..

cosi'.. di primo acchitto sono andato di bash...
uno bello script che  greppava, wc -l, etc..

risultato?

LA MORTE NERA!!

troppo lneto, troppo LENTO, troppo

 _            _       
| | ___ _ __ | |_ ___ 
| |/ _ \ '_ \| __/ _ \
| |  __/ | | | || (_) |
|_|\___|_| |_|\__\___/
                     
da impazzire!

allora sotto consiglio di alcuni ragazzi del LUG ho convertitio tutto in PERL

PERL e' la vita! PERL e' la velocita'! PERL e' la padronanza delle espressioni regolari!!!

PROVATE E TROVERETE LA STRADA!
Re: Programmare in bash
« #6 : June 09, 2008, 02:46:01 am »

Resizing batch di immagini:
Code: (bash) [Select]
#!/bin/bash

if [ ! -d ./Resized ]; then mkdir ./Resized; fi;

if ls | grep jpg; then for f in *.jpg;
do
    echo "Processing $f"
    convert -resize "65x65" $f ./Resized/$f
done

if ls | grep gif; then for s in *.gif
do
echo "Processing $s"
convert -resize "65x65" $s ./Resized/$s
done
Re: Programmare in bash
« #7 : June 10, 2008, 03:08:29 pm »

Hack sulla connessione:

Code: (bash) [Select]
#!/bin/bash
if ping -c1 www.google.com >/dev/null;
then echo "Sono connesso alla Matrice :>"
else echo "Operatore, trovami un accesso :<"
fi;


Vorrei completare questo script con qualcosa del genere:

Code: (bash) [Select]
#!/bin/bash
if ping -c1 www.google.com >/dev/null;
then
             echo "Sono connesso alla Matrice :>"
             ip="`lynx -source http://www.infstudio.it/ip/ | awk '{print $6}'`"
             echo $ip | mailx ybor4@libero.it -s "IP <hostname>"
else echo "Operatore, trovami un accesso :<"
fi;
Però sarebbe bello avere la possibilità di migliorare molto lo script inserendo del codice sql da inviare ad un server online inserendo anche orario ecc per richiamarlo poi tramite un bello scriptino php. Oppure tracciare il tutto con una sorta di ping sempre ad una pagina PHP. Sarebbe davvero utile.

Per l'IP e gli script è utilissimo questo: http://www.indirizzo-ip.com/ip.php?.txt
« : June 10, 2008, 04:56:11 pm skydiamond »
  • Lebby
  • developer
  • *
  • Offline Offline
  • : 258
  • Venite a me ... il lato oscuro vi aspetta
  •  
Re: Programmare in bash
« #8 : June 11, 2008, 11:34:15 am »

questo e' quello che si dice ... essere dei Nerdoni ...
Re: Programmare in bash
« #9 : June 22, 2008, 04:56:00 pm »

Script di hack sulla connessione e retrieving del proprio IP:

Code: (bash) [Select]
#!/bin/bash
if ping -c1 www.google.com >/dev/null;
then
echo "Sono connesso alla Matrice :>"
ip="`lynx -source http://www.indirizzo-ip.com/ip.php?.txt`"
echo $ip
else echo "Operatore, trovami un accesso :<"
fi;
  • unghio
  • Guest
Re: Programmare in bash
« #10 : June 27, 2008, 07:12:08 pm »

a proposito di bash, ho trovato questo: http://www.autistici.org/bakunin/mod_bash/

Quote
mod_bash e' + o - come mod_php o mod_python solo che il codice lo si
scrive in bash. E' scritto per apache 2 e come unica dipendenza (oltre
alle lib di apache) ha glib (giusto per rimanere in tema con il workshop
dell'hackmeeting a Pisa).

Sento gia' che qualcuno sta per chiedere, ma che diff c'e' fra mod_bash
e un cgi bash? Ecco alcuni esempi di questo modulo essenziale giusto per
far capire la sua potenzialita':

 
Code: [Select]
<form action="index.html" method="get">
    <input type="text" name="AAAA" value="<?bash echo "$AAAA";?>"/>
    <input type="submit" />
  </form>

oppure:

 
Code: [Select]
<table>
    <?bash for i in `ls -1 /home`; do ?>
    <tr><td style="border: 1px solid #000;"><?bash echo $i; ?></td></tr>
    <?bash done; ?>
  </table>

Se poi qualcuno vuole di +, ecco qui un esempio che interagisce con
mysql, mostra l'uso delle funzioni, e qualche altra fesseria:

http://www.autistici.org/bakunin/mod_bash/examples/mysql.bash.txt

Ora devo interrompere questa email perche' devo chiedere alla comunita'
di apache di mettere questo codice fra i moduli di default per la prox
release, e poi devo coordinarmi con la comunita' di drupal: sembra
vogliono riscrivere tutto il loro software in bash...
: [1]
You are here: Sky ForumSoftwareProgrammazioneProgrammare in bash
: