У меня возникли проблемы с получением bash для хорошей игры с парсингом слов из командной строки.Я считаю, что проще всего привести пример, поэтому без дальнейших церемоний, здесь мы идем.
Это скрипт test.sh:
<code>#!/bin/bash
echo "inside test with $# arguments"</p>
<p>if [[ $# -eq 0 ]]
then
data=<code>cat data.txt</code>
echo ./test $data
./test $data
else
for arg in "$@"
do
echo "Arg is \"$arg\""
done
fi
А вот данные файла.txt:
<code>"abc 123" 1 2 3 "how are you"
Требуемый вывод
<code>$ test.sh
равен
<code>
inside test with 0 arguments
./test "abc 123" 1 2 3 "how are you"
inside test with 5 arguments
Arg is "abc 123"
Arg is "1"
Arg is "2"
Arg is "3"
Arg is "how are you"
Но вместо этого яполучение
<code>
inside test with 0 arguments
./test "abc 123" 1 2 3 "how are you"
inside test with 8 arguments
Arg is ""abc"
Arg is "123""
Arg is "1"
Arg is "2"
Arg is "3"
Arg is ""how"
Arg is "are"
Arg is "you""
Действительно раздражает то, что если я выполняю команду, которая выводится из строки 7 test.sh, я делаю получаю желаемый результат (безпервые две строки, конечно).
Так, по сути, есть ли способ получить bash для разбора слов, если дан вход, который был прочитан из файла?