LINUX.ORG.RU

Простенький скрипт

 


0

2

Доброй ночи.

Потребовался мне тут небольшой скриптик, но в bash особо не соображаю. Подскажите, пожалуйста, каким образом засунуть в переменную результат, выведенный какой-либо командой (допустим, ls) и проверить эту переменную на соответствие регулярному выражению? В случае соответствия - выполнить одно действие, в обратной ситуации - другое действие. Ах, да, скрипт нужно выполнять в цикле, раз в 2 минуты, например, поэтому нужна так же команда прерывания работы скрипта.

Ответ на: комментарий от post-factum

И всё вместе:

#!/usr/bin/env bash

while true
do
	VARIABLE=`ls`
	echo $VARIABLE | egrep 'b[a-z]+'
	res=$?
	if [ "$res" == "0" ]
	then
		echo "matched"
	else
		echo "not matched"
	fi
	sleep 120
done

Прерывается по Ctrl+C.

post-factum ★★★★★ ()
Последнее исправление: post-factum (всего исправлений: 1)
Ответ на: комментарий от post-factum

Что скажешь, мой анонимный анонимус?

Теперь запили pf-bash,ускоряющий работу твоего скрипта в 100500 раз!

anonymous ()

очень трудно представить случай когда понадобится var=$(ls)
Обычно нубы делают for var in $(ls), вместо for var in *

zolden ★★★★★ ()
Ответ на: комментарий от iVS

Уже знаком. Нет, не стыдно. Не знать не стыдно, стыдно не хотеть знать.

post-factum ★★★★★ ()
Ответ на: комментарий от post-factum
#!/usr/bin/env bash

while :
do
	[[ $(ls) =~ ^x[a-z]+ ]] && echo matched || echo not matched
	sleep 120
done
ananas ★★★★★ ()

Я бы вместо ручного вызова sleep использовал watch, который позволяет запускать любой ваш скрипт раз в N секунд. Например, watch -n 120 script.sh будет запускать скрипт раз в 2 минуты.

php-coder ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.