Bash regex

2010-03-22 11:03:14 UTC by maris in Linux, Skripti,

Kopš Bash 3. versijas ir pārādījies regulāro izteiksmju atbalsts, kas ir līdzīgs realizācijai iekš perl. if [[ "pirmagrupa01-51" =~ ^([a-zA-Z]+)([0-9]+)-([0-9]+)$ ]] then echo "group1:${BASH_REMATCH[1]} group2:${BASH_REMATCH[2]} group3:${BASH_REMATCH[3]}" fi path=/var/log/messages echo ${path%/*} /var/log echo ${path#*/} messages

(0 komentāri)

Bash timed execution

2009-05-22 08:05:14 UTC by maris in Linux, Skripti,

Tikko savajadzējās uztaisīt check'u ar timeout'u, te mu būs piemērs kā to izdarīt no bash. Ideja diezgan vienkārša - forkojam galveno procesu backgroundā, savācam procesa pid, guļam timeout sekundes, pēc kā pārbaudma vai process joprojām ir aktīvs. #!/bin/bash mainproc(){ for i in `seq 1 20` do echo "Now in $i" sleep 1 done } timeout=5 echo "Running with timeout of 5 seconds" mainproc & pid=$! sleep $timeout kill -0 $pid if [ $? -eq 0 ] then echo "Process hang" kill -9 $pid else echo "Process ok" fi

(0 komentāri)

Visu tabulu alter iekš MySQL db

2009-02-09 10:53:11 UTC by maris in Skripti, MySQL,

Šad tad savajagas veikt izmaiņas visās tabulās kādā DB iekš MySQL, ja ir pāris tabulas, tad nav nekas traks, bet ja to ir daudz, tad tas var drusku ievilkties. Te būs one liner bash skripts, ja kam savajagas :) for table in `mysql -uUSERIS -pPAROLE -h127.0.0.1 --skip-column-names DATUBAZE -e "SHOW TABLES"`;do mysql -uUSERIS -pPAROLE -h127.0.0.1 DATUBAZE -e "ALTER TABLE $table ENGINE=myisam;";done

(0 komentāri)