2016-05-29 3 views
1

Я использую Mac. Я составил байткод run, он может работать на ввод строки в командной строке, например:Пространства не распознаются одинаково в txt-файле и в командной строке

./run "Here is a text input" 

Чтобы проверить run, я пишу inputs.txt, который содержит разрывать линии входов, одна строка представляет собой один вход:

"input1" 
"This is input 2" 
"input 3" 

И вот test.sh:

#!/bin/bash 
while IFS='' read -r line || [[ -n "$line" ]]; do 
    echo "Text read from file: $line"; 
    ./run $line 
done < inputs.txt 

проблема заключается в том, что тест не выполняется для входных линий которые содержат пробел, хотя тестирование одной и той же строки в команде работает.

Так что, я думаю, пространство не интерпретируется одинаково, когда оно находится в inputs.txt и в командной строке.

Кто-нибудь знает, что делать, чтобы пробелы в inputs.txt интерпретировались так же, как в командной строке? Может быть, мне следует изменить формат inputs.txt?

+1

может быть проблемой для цитирования. избавиться от кавычек во входном файле, а затем добавить их в скрипт: './run" $ line "' – jdigital

ответ

2

Я думаю, вам просто нужно изменить

./run $line 

в

./run "$line" 

Таким образом, использование $line не будет разделен на аргументы, прежде чем запустить называется.