Я создал сценарий оболочки, цель которого - найти файлы, которые не содержат конкретной строки, а затем отобразить первую строку, которая не пуста или иным образом бесполезна. Мой сценарий хорошо работает в консоли, но по какой-то причине, когда я пытаюсь направить вывод в файл .txt, он получается пустым.
Вот мой сценарий:
#!/bin/bash
# takes user input.
echo "Input substance:"
read substance
echo "Listing media without $substance:"
cd media
# finds names of files that don't feature the substance given, then puts them inside an array.
searchresult=($(grep -L "$substance" *))
# iterates the array and prints the first line of each - contains both the number and the medium name.
# however, some files start with "Microorganisms" and the actual number and name feature after several empty lines
# the script checks for that occurence - and prints the first line that doesnt match these criteria.
for i in "${searchresult[@]}"
do
grep -m 1 -v "Microorganisms\|^$" $i
done >> output.txt
Iпопытался переместить >>output.txt
вправо после строки grep
внутри цикла, попытался переключить >>
на >
и 2>&1
, попытался использовать tee
. Не уходи.
Честно говоря, я чувствую себя совершенно застрявшим в том, что это может быть за проблема. Я уверен, что кое-что мне не хватает, но я не настолько хорош, чтобы это заметить. Я был бы очень признателен за любую помощь.
РЕДАКТИРОВАТЬ: Добавлены файлы, чтобы лучше проиллюстрировать то, с чем я работаю. Примеры входных данных, которые я пробовал: Glucose
, Yeast extract
, Agar
. Ссылка на файлы [140kB] - папка была предварительно разархивирована.
Скрипт получил полные разрешения для выполнения. Я не думаю, что вывод переписывается, потому что даже если я не выполняю итерацию и просто запускаю одну строку цикла, файл пуст.