Я написал следующую функцию в Bash:Grep команды в Bash
function findTest {
files=`ls $1`
for file in ${files[*]}; do
if [[ "$file"=="*.tst" ]]; then
grep "version: $2" $1/$file
if [[ $? -eq 0 ]]; then
echo -n $2
grep "result" | cut -d ":" -f2
fi
fi
done
}
по какой-то причине, линия grep "version: $2" $1/$file
утверждает, что $1/$file
не файл/каталог, но я знаю, за то, что $ 1 содержит адрес каталога, в котором $ файла exsists в есть ли рациональная причина
попробовать 'Grep "версия: $ 2" "$ 1/$ файл"' –
файлов '= \' Ls $ 1 \ '' не создает массив. Вы хотите 'files = ($ 1)' или 'files = (" $ 1 "/ *)', если '$ 1' - это каталог для этого. –
Я бы включил set -x, чтобы вы могли видеть расширенную версию команды, которую она запускала, возможно, она не расширяется, как вы думаете. Кроме того, если у какого-либо из ваших имен файлов есть пробелы, у вас возникнут проблемы с этим маршрутом –