2014-10-21 2 views
0

У меня есть сценарий, который один из моих профессоров из колледжа дал нам изменить, но я не могу точно понять, что он делает. Может ли кто-нибудь помочь мне понять это немного лучше?Unix sh Сценарий путаницы

for i 
do grep look $i; done 

Из того, что я могу собрать, greped значение переменной i, которое может быть файлом или каталогом. Однако я не знаком с тем, как выглядит команда взгляда. Я был бы очень признателен за любые советы, которые вы могли бы предложить.

+0

Это может помочь, если вы сказали нам, что это должно делать; синтаксис выглядит для меня совершенно новым (поскольку, похоже, отсутствует 'in'). –

+0

Это все? – Yetti99

+0

Да, это все, что он нам дал, и он не сказал нам, что он делает. Когда я запускаю его с именем файла или каталога, он запускается, но ничего не возвращает. – NinjaZ

ответ

2

look не является командой, это первый параметр grep. Поэтому он будет искать слово look в файле с именем $i. (grep не будет искать папки, если вы не пройдете в -R как в grep -R look $i.)

Запутанной бит, что for i обычно поставляется с in WORDS указанного, так for i in one two three будет запускать команды между do и done три раза: один раз с переменной i = «один», один раз с i = «два», и один раз с i = «три». Однако bash manual объясняет, что делать, если in не указан:

Если «слова» нет, то для команды сразу выполняет команды для каждого позиционного параметра устанавливается, как если бы «в" $ @ "'указано [...].

Так, короче говоря, если ваш скрипт находится в файле с именем foo.sh, то вызов foo.sh file1 file2 будет искать слово look в файлах «file1» и «file2».

Смежные вопросы