Страница 1 из 1

Shell и конвеер

Добавлено: 2012-09-11 18:05:56
shadow_user
Подскажите пожалуйста, нужно парсить вывод утилиты smbclient -gNL $ip, находить в выводе сервер samb`ы и его шары, но приходится сначала сливать вывод smbclient в tmp файл (так-как если испоьзовать конвеер переменные за циклом не будут сохраняться из-за subshell`a), чтобы его потом построчно разобрать в теле цикла и передавать результаты в переменные для дальнейших действий в функцию, вопрос заключается в том можно ли убрать tmp файл, используя каким нибудь образом конвеер, так-как ip много, нехочется делать лишнюю нагрузку на файловую систему, да и некрасиво это как мне кажется!?

Код: Выделить всё

while read line
do
	object=`echo $line|awk -F"|" '{print $1}'`
	case "$object" in
		Disk)
				tmp=`echo $line|awk -F"|" '{print $2}'`
				dsk="$tmp $dsk"
				;;
		IPC)
				ipc=`echo $line|awk '{print $3}'|tr -d "()"`
				;;
		Server)
				echo $line|grep -q $ipc
				if [ $? -eq 0 ]
				then
					srv=`echo $line|awk -F"|" '{print $2}'` 
				fi
				;;
	esac
done < $ip.smb

Re: Shell и конвеер

Добавлено: 2012-09-12 0:27:33
shadow_user
Вопрос снят нужно использовать конструкцию вида program|{do-something}