- 1
- 2
- 3
- 4
#!/bin/sh
for last ; do true ; done
echo "last argument: $last"
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
#!/bin/sh
for last ; do true ; done
echo "last argument: $last"
And you can't explain that.
Оригинал: http://stackoverflow.com/questions/1853946/getting-the-last-argument-passed-to-a-shell-script
0
# For bash and ksh, we can use faster builtin routines to do manipulation,
# otherwise (ash) fall back to slower method using `expr'.
# The extra level of indirection using `eval' is necessary a) for ksh, and
# b) to get past ash.
if [ "$RANDOM" != "$RANDOM" ]
then
math () {
eval echo "\$(($*))"
}
index () { # index string c
eval "I=\${1%$2*}"
eval echo "\${#I}"
}
...
else
math () {
expr "$@"
}
index () { # index string c
expr $1 : ".*$2" - 1
}
...
fi
Отличный способ определения шелла из старослакварского /dev/MAKEDEV.
0
#!/bin/bash
export TMP_FS=/tmp
export MAILRU_LOG=$TMP_FS/mail_ru_log2.txt
RECF=$PWD/.rec
mkdir -p avatars && cd avatars
declare -a symb=({a..z} {0..9} - _)
pid='';
ppid='';
pln=0
i=0
max_len=9
ci=0
ask_pid()
{
read pid
ppid=$pid
echo "Pid changed to $pid"
pln=`echo $pid | wc -c`
max_len=$pln
}
function get_name
{
pid=$1
let ci++
echo $ci > $RECF
for idn2 in $(seq 0 $((${#symb[@]} - 1))); do
ppid=$pid
pid=$pid${symb[$idn2]}
curl --connect-timeout 1 -s http://avt.foto.mail.ru/mail/$pid/_avatar > $pid.jpg
fdif=`cmp $pid.jpg ../A.jpg`
if test -z "$fdif"
then
#echo "File is empty"
rm $pid.jpg
else
friends=`curl --connect-timeout 1 -# http://my.mail.ru/mail/$pid | grep -o \"/mail/[^/]*/\" | sed -e 's/\/mail\///g;s/\///g' | uniq`
echo "friends : $friends"
echo "$PWD/$pid.jpg friends:$friends" | tee -a $MAILRU_LOG
echo "File isn't empty"
fi
let pln++;
if [ $pln -lt $max_len ]; then
get_name $pid
fi
let pln--
pid=$ppid
pid=${pid:0:$pln}
done
}
trap 'ask_pid' USR1 INT
get_name $pid
0
MAXJOBS=20
for i in `seq 1 $MAXJOBS` ; do nice -n 19 gzip -c /dev/zero > /dev/null & done
while true
do
LA=`</proc/loadavg` && LA=${LA// */}
H=$(date +%M) && H=${H/0/}
G=`echo "(${MAXJOBS}/2)*(s(2*3.14159*${H}/60) +1 ) <= ${LA}" | bc -l`
test ${G} -lt 1 && for i in `seq 1 $MAXJOBS` ; do kill -SIGCONT %$i ; done || for i in `seq 1 $MAXJOBS` ; do kill -SIGSTOP %$i; done
sleep 1
done
Генерирует load average, и поддерживает её в форме синусоиды, с периодом в час.
на графике выглядит как-то так:
http://i.piccy.info/i7/108cbdd61801da0ed805ecf41ecbc9e3/4-47-114/35579895/localhost_load.png
0
FPOINT=$1
test ${FPOINT:12:2} = "e-" && echo 0 && exit 0
FPOINT=$1 ; FPOINT=${FPOINT/,/.}
MANT=${FPOINT//e*/} ; EXP=${FPOINT:((${#FPOINT}-2)):2} ;
echo "define i(x) {auto s;s=scale;scale=0;x/=1;scale=s;return(x);} ; i(${MANT}*10^${EXP})" | bc
rrdtool хранит и что самое противное выводит при запросе данные в формате с плавающей запятой, том самом который выглядит так: 1.2345678901e+09
а баш в свою очередь не умеет работать с float, так что для коекакой работы с этими базами на баше пришлось написать такую функцию.
Учитывая что у меня только положительные значения, пока ошибок не было.
0
if [ `which which` ]; then
...
else
...
fi
0
cd /root/jbot; java -jar jimbot.jar 2> /dev/null 1> /dev/null &
Я тихонечко это тут положу...
А вот по скромному мнению автора, что делают эти строки:
Вот выбрал систему Ubuntu (прим: видимо речь идет о VPS/VDS дай бог что не в виртуалбоксе под виндой). Администратирование веду через программу PuTTy.
В даный момен я тестирую ICQ чат. Для этого надо включить java. В моем случае это так:
cd /root/jbot; java -jar jimbot.jar 2> /dev/null 1> /dev/null &
“Убить” процес:
sudo killall -9 java
cd – значит что выбрать из дериктории /root/jbot; и с дериктории java -jar jimbot.jar значок запустить 2>/dev/null так же второй скрипт 1> /dev/null и значок завершение &
Исходник тута: http://zvlad.com/3-zapusk-icq-chata-v-ubuntu.html
0
#!/bin/bash
hl=`cat ~/hostlist.txt`
wrd=`cat ~/worlds.txt`
for address in $hl
do
rm /tmp/`basename $address`.txt && echo "Deleted file "/tmp/`basename $address`.txt
done
for address in `cat ~/hostlist.txt`
do
echo $address
for wrd in `cat ~/worlds.txt`
do
tmp=/tmp/`basename $address`.txt
curl -s $address| cat -b |grep -i $wrd >> $tmp
curl -s $address| cat -b |grep -i $wrd
done
done
Находит слова с файла ~/worlds.txt на сайтах со списка в файле ~/hostlist.txt
0
#!/bin/dash -e
fono="#DFAF8F"
monato="#80AAD4"
kvin="#DCA3A3"
fino="#949494"
enigo () {
while read inc < "$FIFO"
do
rel=$(( $rel + $inc ))
cal -m $( date +'%m %Y' -d "+$rel month" ) | filtrilo $rel
done
}
filtrilo () {
kura=$(date +%e)
awk -v rel=$1 -v kura="$kura" -v fono=$fono \
-v monato=$monato -v kvin=$kvin -v fino=$fino '
BEGIN { nigra = "#000000" }
function fg(koloro, text) { return sprintf("^fg(%s)%s^fg()", koloro, text) }
function bg(koloro, text) { return sprintf("^bg(%s)%s^bg()", koloro, text) }
function set(i,j, koloro) { for(k=i;k<=j;k++) $k = fg(koloro, $k) }
NR == 1 { $1 = fg(monato,$1) }
NR == 2 { set(1,5,kvin); set(6,7,fino) }
NR > 2 && rel == 0 { sub( sprintf("%s\\>",kura), fg(nigra, bg(fono, kura)) ) }
{ print " " $0 }'
}
eligo () {
dimensioj=$( xdpyinfo | awk '$1 == "dimensions:" { print $2 }' )
ekrano=${dimensioj%x*}
menuo=170 # artifiko
x=$(( $ekrano - $menuo ))
y=20
i="exec:echo 0 > $FIFO"
n="exec:echo +1 > $FIFO"
p="exec:echo -1 > $FIFO"
agoj="onstart=uncollapse,grabkeys,grabmouse,$i;onexit=$i;\
key_Escape=exit;key_q=exit;key_n=$n;key_p=$p;key_space=$n;key_BackSpace=$p;\
button3=exit;button5=$n;button4=$p"
exec dzen2 -l 7 -x $x -y $y -w $menuo -u -e "$agoj"
}
FIFO=${0%.sh}
[ -p "$FIFO" ] || mkfifo "$FIFO"
rel=0
enigo | eligo
Зачем это здесь? Смеха ради.
Кстати в баше можно организовать bidirectional pipes? Никак не соображу.
0
#!/bin/bash
sed -e 's/^\s*$/\#/gi' < $1| sed -e 's/$/<br>/gi'| awk 'BEGIN { i1=0;print "<html><head><META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=Windows-1251\"></head><body>"; } { gsub(/^#/,"<a name=\"L"i1++"\">L"i1-1"</a>");print } END { for(i=0;i<=i1;i++){ print "<a href=\"#L"i"\">#"i"</a><br\ >"};print "</body></html>" }' > $1.html
Программа преобразует текстовый файл в html