The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"bash - поиск нужного файла и получение пути к файлу"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"bash - поиск нужного файла и получение пути к файлу"  
Сообщение от rfcr (ok) on 28-Апр-09, 16:57 
Всем привет!
Буду благодарен если кто подскажет или поможет разобраться....

Пишу скрипт на bash, который по замыслу должен искать в определенном файле определенную строку и если таковая строка есть в этом файле то - выводить путь к этому файлу, в переменную или на экран не важно.

Вот кусок скрипта:

VMNAME="$1"


VMNAME=`echo "displayName = \"${VMNAME}\""`
echo $VMNAME
echo ""
VMNAME2=`echo "'${VMNAME}'"`
echo $VMNAME2
#Пример того, что передается grep - 'displayName = "xmachine"'
F=`find /m* -name '*.vmx' -print0 | xargs --null grep -l "$VMNAME2"`
echo ""
echo $F

Когда запускаю скрипт - он выдает только значения переменных (поставленных для контроля) и grep видимо не понимает что от него хотят:

# ./x xmachine
displayName = "xmachine"

'displayName = "xmachine"'

И все, больше ничего.


В ручную когда запускаю, все работает:

#find /m* -name '*.vmx' -print0 | xargs --null grep -l -i 'displayName = "xmachine"'

/m/x-machine/SUSE Linux.vmx


В чем тут может быть дело??

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "bash - поиск нужного файла и получение пути к файлу"  
Сообщение от Wolkodaw on 28-Апр-09, 23:09 
Надо так:
F=`find /m* -name '*.vmx' -print0 | xargs --null grep -l -i "$VMNAME"`
Иначе она будет искать именно строку с кавычками. А строки с кавычками в файле - нет.

Так же, как и ты - ищёшь
find /m* -name '*.vmx' -print0 | xargs --null grep -l -i 'displayName = "xmachine"'

а не
find /m* -name '*.vmx' -print0 | xargs --null grep -l -i "'displayName = \"xmachine\"'"

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "bash - поиск нужного файла и получение пути к файлу"  
Сообщение от rfcr (ok) on 29-Апр-09, 09:48 
Спасибо! Получилось.
Пишу скрипт дальше и опять те же грабли...

Делаю следующее:
F=`find /m* -name '*.vmx' -print0 | xargs --null grep -l -i "$VMNAME"`

echo ""
F=`echo "\"${F}\""`
echo $F
vmware-cmd $F getstate

Vmware-cmd ругается на присутствие пробелов и не отрабатывает как надо. И вроде заключил в кавычки и переменная нормально выводится:

# ./x "x - machine"
displayName = "x - machine"

"/m/x-machine/SUSE Linux.vmx"
/usr/bin/vmware-cmd: Could not connect to VM "/m/x-machine/SUSE
  (VMControl error -14: Unexpected response from vmware-authd: Invalid pathname: "/m/x-machine/SUSE)

Что ж такое!

Догадался сам :) Надо так:

vmware-cmd "${F}" getstate

Тогда все работает как надо..

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру