Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по Linux (http://forum.oszone.net/forumdisplay.php?f=9)
-   -   Программирование на shell (http://forum.oszone.net/showthread.php?t=14544)

Andrewkras 25-11-2002 21:12 78413

Значит так: мне надо проверить существование определённого файла на диске. делаю это так:
ls | grep <имя файла> | read $переменная
if [ $переменная = ключевое значение ] ;then
<что-то>
fi

и по другому пробовал:
ls | grep имя_файла >> $переменная

и в том и в другом случае в $переменной ничего не оказвыается, хотя вызов ls | grep имя_файла возвращает одно значение (тот самый файл). Что я делаю не так?

JumpingJack 25-11-2002 23:54 78414

имхо здесь:
Цитата:

ls | grep <имя файла> | read $переменная
и здесь:
Цитата:

ls | grep имя_файла >> $переменная
перед именем переменной не нужен символ '$', но могу ошибаться :)


Andrewkras 26-11-2002 00:43 78415

когда убирал $ то в случае с ... >> переменная оно выводило информацию в файл с именем переменная
не то... что-то другое тут

JumpingJack 26-11-2002 01:02 78416

а... ну да.. :rolleyes:

ну, а в случае с read, по идее должно работать?

ruslandh 26-11-2002 05:14 78417

alfa=`ls | grep a`
echo $alfa

Andrewkras 26-11-2002 08:48 78418

ruslandh
оно говорит что alfa не является командой :(
блин. мож переменную надо ещё как-то объявлять? а то я не объявлял переменых и всё работает (кроме этого)

DemonZla 26-11-2002 16:17 78419

export alfa=`ls | grep a`
echo $alfa

100% работает...

alexej 28-11-2002 05:44 78420

   Ещё проблема: запись в макефайле $переменная приводит к подстановке "еременная". Пример $LD_LIBRARY_PATH - получаем D_LIBRARY_PATH. $ удаляет себя и следующий символ. Можно обмануть $$LD_LIBRARY_PATH, подставляется $LD_LIBRARY_PATH, но воспринимается только как строковая константа. Т.о. считывать переменные среды при выполнении make, а заодно и их модифицировать (export), не удаётся.
   Из командной строки - всё нормально.

Guest 07-02-2003 14:43 78421

Цитата:

ls | grep <имя файла> | read $переменная
if [ $переменная = ключевое значение ] ;then
<что-то>
fi
и по другому пробовал:
ls | grep имя_файла >> $переменная
Зачем же так сложно?
Можно сразу<b>
if [ -f <имя файла> ]
then
<что-то>
fi </b>
или <b>
if find <откуда искать> <имя файла>
then
<что-то>
fi </b>

leprikon 07-02-2003 19:25 78422

#!/bin/sh

echo "type: d - directory , f - file ,\r";
echo "\rl - link, b - block, p - pipe ";
read type;

echo "search name ?";
read search;

find=`find / -name $search -type $type`;

echo "result :";

echo $find;

Для применения к каждому найденому файлу какой-либо команды - можно добавить к финду параметр -exec (имхо).

P.S. Вариантов много.

Guest 13-03-2003 11:09 78423

нах тепе столько операций когда есть чедная команда test
и ее алиас [

вот

if [ -f /some/file ];
then
echo yes this file
else
echo no this no standart file
fi

или еси делаеш одно действие то можно коротко

[ -f /some/file ] && echo Yes File present

ну типа того...

leprikon 13-03-2003 17:23 78424

Guest

все же не намного короче =)

и для вывода _одного_ файла =)

[s]Исправлено: leprikon, 3:24 14-03-2003[/s]


Время: 00:03.

Время: 00:03.
© OSzone.net 2001-