LINUX.ORG.RU

BASH. новичок в этом деле, не могу понять в чем ошибка


0

1

нужно написать скрипт, который должен вывести список файлов, в первой строке которого находится заданное слово. Написал, но не работает, и ошибку тоже не выдает, подскажите в чем дело неопытному.

#!/bin/bash


search()


{

for file in ${WORKDIR} ; do
    if [ -r "$file" -a -f "$file" ]; then
    head -n 1 "$file" | grep -qi  "$KEYWORD" && echo "$file"
    fi
done

return

}



echo -n " Enter a search term: "


read KEYWORD


echo -n " Enter the path to the directory: "

read "WORKDIR"

search $KEYWORD $WORKDIR

exit


Ответ на: комментарий от anonymous

Ой, одна цитата убежала выше, вот фикс:

видим, что подразумевалось 128+32

мне лень искать место в документации, где написано, что именно с 64х

А где было про 64? Собственно, эта подветка была про коды >160, или вы так блестяще воспользовались «Это уж праздный интерес,»?

anonymous
()
Ответ на: комментарий от anonymous

Слишком широки аргумент, на мой взгляд: с таким подхом - лучше вообще скрптов не писать

согласен. Лучше не писать. А что делать?

Можно намек, чем все-таки чревато в данном случае?

тебе сообщают о сбое. Ты смотришь лог, и видишь «скрипт рухнул с кодом 130». Вот и думай, что это такое? Возможно, было 0 файлов, а возможно — юзеру надоело ждать sleep, и он просто взял, и нажал CTRL+C, послав SIGINT (как ты наверное знаешь, нет юзеров, которые в этом признаются, даже под пыткой калёным железом).

Я понимаю, что можно сделать тест, проверить и разобраться, но зачем, если можно просто вернуть 100?

А где было про 64?

яхз, ищи. Почему я всегда должен искать за тебя? Поищи лучше ты, и узнаешь много нового и полезного.

или вы так блестяще воспользовались «Это уж праздный интерес,»?

я IRL наступал на эти грабли. Хочешь — положи эти грабли, и ходи по ним. Я не против. Может когда они тебе полбу стукнут, станешь более дальновиден.

Там _внутренний цикл_, и единственного возможного проброса кода от внутренних команд - нет: grep хоть на любую поломаную линку ругнется. Дык, как пробрасывать, когда на все ругнулось, когда хотя бы на одну, когда директории нет? (развернутый момент, упоминавшийся в первом абзаце сего коммента)

ИМХО такой цикл надо завершить return'ом (раз мы в функции), при ЛЮБОЙ непредвиденной ошибке. Юзеры — они такие. Вот давеча один закрыл файл /sys/devices/system/cpu/online, и удивлялся, почему какая-то программа не работала. ИЧСХ — так и не сказал, зачем он такое натворил.

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.