Lipetsk *nix Association Forum Lipetsk *nix Association Forum
Новости: С 7.09.2011 отправка личных сообщений разрешена только пользователям из группы новичков (4 и более публичных сообщений). Ибо спамеры просто задолбали.
 
*
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
08 Апрель 2020, 22:12:08


Войти


Страниц: [1]   Вниз
  Печать  
Автор Тема: Изврат на shell  (Прочитано 2275 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Леголегс
Гуру
******

Карма: 18
Сообщений: 1006


Fedora 12 x86_64

ОС:
Linux Linux
Браузер:
Opera 9.80 Opera 9.80


Награды
« : 26 Ноябрь 2009, 18:13:40 »

Самый дурацкий способ решить следующую задачу:
Если переменная окружения "a" оканчивается на ".gz", то напечатать "hello world!"

Код:
[ $(echo $a|cut -c$((${#a}-1))-) = "gz" ] && echo "Hello, world!"

[ $(echo $a|sed "s/.*\(..\)/\1/") = "gz" ] && echo "Hello, world!"

echo $a|sed -e"s/.*gz$/Hello, world\!/" -et -eD

expr $a : .*gz >/dev/null && echo "Hello, world!"
[ $(expr $a : '.*\(..\)') = "gz" ] && echo "Hello, world!"

echo "ifelse(substr($a,eval(len($a)-2)),gz,\`Hello, world! ')"|m4

case $a in *gz) echo "Hello, world!";; esac

echo $a|emacs -batch -eval '(defun f (arg) "M") (if (string= (substring arg -2) "gz") (princ "Hello, world!\n")) )' -f f

echo -e '#include <stdlib.h>\n#include <stdio.h>\n#include <string.h>\nint main(){ char * end, * a; if (!(a = getenv("a"))) return 1; if ((end = a + strlen(a) - 2)<a) return 0; if (end[0] == '"'g'"' && end[1]=='"'z'"') puts("Hello, world!"); return 0;}'| gcc -x c -Wall -Wextra -O - -pedantic && ./a.out

kjs -e 'if (/\.gz/.exec("'$a'")) print ("Hello world!");'

php -r 'if (preg_match("/\.gz/",$_ENV["a"])) echo "Hello world!\n";'

[ "$(basename $a .gz)" != $a ] && echo 'Hello world!'

echo $a | grep -q "gz$" && echo 'Hello, world!'

echo -n ".gz" > pattern.txt
patternlen=$(stat -c %s pattern.txt)
echo -n "$a" > var.txt
varlen=$(stat -c %s var.txt)
newlen=$(echo "$varlen-$patternlen" | bc)
dd if=var.txt of=var2.txt bs=1 count=$newlen 2> /dev/null
dd if=pattern.txt of=var2.txt seek=$newlen bs=1 2> /dev/null
cmp -s var.txt var2.txt && echo 'Hello world!'

Кто продолжит? Улыбка
Записан

[ Мой FTP ftp://legolegs.homelinux.net ]
[ Репозиторий Fedora http://fedora.leschat.net/ ]
[ Репозиторий Ubuntu http://ubuntu.leschat.net/ ]
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2011, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM