LINUX.ORG.RU

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

 


0

2

Доброй ночи.

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

★★

Последнее исправление: emissar (всего исправлений: 1)

Ответ на: комментарий от 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

grep -q && надо было упомянуть.

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

while true
do
	VARIABLE=$(ls)
	echo $VARIABLE | egrep -q '^x[a-z]+' && echo matched || echo not matched
	sleep 120
done

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

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

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

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

anonymous
()

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

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

Ты что, не знаком с таким выражением?

if [[ `ls` =~ $regex ]]
then
	echo "matched"
else
	echo "not matched"
fi
И не стыдно?

iVS ★★★★★
()
Ответ на: комментарий от 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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.