Чтение пути строки muilti из документа и выполнение действий - PullRequest
0 голосов
/ 30 октября 2019

У меня есть скрипт, который я пытаюсь запустить на главном документе. Скрипт просматривает документ txt с полным именем файла и путем, заключенным в двойные кавычки. Затем он берет имя файла и родительскую папку (потому что структура папок не совпадает) и ищет главный документ. Затем он выводит результат в другой текстовый документ. Это то, что у меня есть, и это работает, если я помещаю цитируемые файлы непосредственно в строку, но когда я пытаюсь заставить его читать из файла, содержащего цитируемые файлы, он ломается

Пример исходного текстового файла для чтения из: "This-is/An-Example-pFa/ati4_review_2014033434314-15532223545/article19_20140314-155812_REVIEW.JPG" "This-is/An-Example-pFa/ati4_review_2014033434314-15532223545/article19_20140314-155812_REVIEW.JPG" "This-is/An-Example-pFa/ati4_review_2014033434314-15532223545/article19_20140314-155812_REVIEW.JPG"

#!/bin/bash

AWS="/home/user/Documents/awslist.csv" #variable for master document
LSFLDR=$(while read k; do echo "$k";   #variable to read source text file
done < /home/user/Documents/FP.txt)    
strings=(
$LSFLDR                                   
)


for i in "${strings[@]}";
do (
VAR="$i"                                 #variable for line in source text file
DIR="$(basename "$(dirname "$VAR")")"    #variable to locate parent folder
FIL=$(basename "${VAR}")         #variable to locate file name
CMP="${DIR}"\/"${FIL}"           #variable to search master document
if grep -q "$CMP" $AWS;          #searching master document for parent folder and file name
then
       echo $i found >> /home/user/Documents/Scanresults.txt
else
       echo $i not found >> /home/user/Documents/Scanresults.txt
fi

)
done

Ответы [ 2 ]

1 голос
/ 30 октября 2019

Возможно, вы захотите прочитать Как я могу прочитать файл (поток данных, переменную) построчно (и / или поле за полем)? - способ заполненияstrings массив ужасает.

Если вы хотите заполнить массив строками файла:

mapfile -t strings < filename

Если вы просто хотите повторить надстроки файла (не нужно читать весь файл в память):

while IFS= read -r line; do
   do_something_with "$line"
done < filename
0 голосов
/ 31 октября 2019

Спасибо, Гленн! Да, я уверен, что мой сценарий заставил тебя съежиться. Файл карты был именно тем, что мне нужно, чтобы он работал!

...