Показать полную графическую версию : Программирование на 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% работает...
Ещё проблема: запись в макефайле $переменная приводит к подстановке "еременная". Пример $LD_LIBRARY_PATH - получаем D_LIBRARY_PATH. $ удаляет себя и следующий символ. Можно обмануть $$LD_LIBRARY_PATH, подставляется $LD_LIBRARY_PATH, но воспринимается только как строковая константа. Т.о. считывать переменные среды при выполнении make, а заодно и их модифицировать (export), не удаётся.
Из командной строки - всё нормально.
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. Вариантов много.
нах тепе столько операций когда есть чедная команда 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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.