Сценарий оболочки - пробелы не всегда распознаются как таковые?

Я не понимаю, как bash интерпретирует пробелы при выполнении сценария. В конце концов, мне нужен сценарий, который загружается файлом csv, содержащим программное обеспечение, используемое организацией, и он должен возвращать CVE для этих программ, вызывая сценарий python для получения этой информации.

Мой файл будет выглядеть так, но с более чем 500 строками:

"CRYSTAL REPORTS 2008";"SAP";"reporting software";;"Mr. Smith"

И передается моему сценарию, как

$ getcve.sh < test.csv

. Когда я запускаю этот небольшой сценарий, я получаю странные результаты относительно количества слов (которое я хотел использовать для циклического просмотра вывод сценария python для сохранения в другом файле):

Read from file
Source: CVE-2010-2590 CVE-2010-3032 
Words in variable: 2
CVE-2010-2590 CVE-2010-3032 
Words processed: 1

Однако, когда я жестко кодирую «SAP CRYSTAL REPORTS 2008» в сценарии, счетчик меняется на то, что я ожидал:

 Hardcoded query
 Query: "SAP CRYSTAL REPORTS 2008"
 Source: CVE-2010-2590 CVE-2010-3032
 Words in variable: 2
 CVE-2010-2590
 CVE-2010-3032
 Words processed: 2

Сам сценарий выглядит следующим образом:

#!/bin/bash
clear
echo "Hardcoded query"
query='"SAP CRYSTAL REPORTS 2008"'
echo "Query: "$query
var2=$(python3 $HOME/cve-search/bin/search_fulltext.py -q "$query"  | tr '\n' ' ')
echo "Source: "$var2
i=0
echo "Words in variable: "$(echo "$var2"|wc -w)
for cve in $var2
do
    echo $cve
    i=$[ $i+1 ]
done
echo "Words processed: "$i

echo
echo "Read from file"
IFS_OLD=$IFS
IFS=";"
while read title firm desc version manager
do
    query='"'$(echo $firm $title $version | tr -d '"')'"'
    var3=$(python3 $HOME/cve-search/bin/search_fulltext.py -q "$query" | tr '\n' ' ')
    echo "Source: "$var3
    i=0
    echo "Words in variable: "$(echo "$var3"|wc -w)
    for cve in $var3
    do
        echo $cve
        i=$[ $i+1 ]
    done
    echo "Words processed: "$i
done
IFS=$IFS_OLD

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

Я наткнулся на это, немного поигравшись (сценарии оболочки для меня в новинку), и этот странный результат беспокоит me ^^ "

Заранее благодарю за помощь :)

0
07.01.2016, 16:20
0 ответов

Теги

Похожие вопросы