Войти

Показать полную графическую версию : Программирование на shell


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

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

JumpingJack
25-11-2002, 23:54
имхо здесь:
ls | grep <имя файла> | read $переменная
и здесь:
ls | grep имя_файла >> $переменная
перед именем переменной не нужен символ '$', но могу ошибаться :)

Andrewkras
26-11-2002, 00:43
когда убирал $ то в случае с ... >> переменная оно выводило информацию в файл с именем переменная
не то... что-то другое тут

JumpingJack
26-11-2002, 01:02
а... ну да.. :rolleyes:

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

ruslandh
26-11-2002, 05:14
alfa=`ls | grep a`
echo $alfa

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

DemonZla
26-11-2002, 16:17
export alfa=`ls | grep a`
echo $alfa

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

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

Guest
07-02-2003, 14:43
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
#!/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
нах тепе столько операций когда есть чедная команда 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
Guest

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

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

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




© OSzone.net 2001-2012