зачем порождать другой процесс?
$: IFS="$IFS=" read x version x < file.txt
$: echo "$version"
"11.22.33"
IFS - это список внутренних разделителей полей, который по умолчанию включает пробелы, табуляции и переводы строк. Если вы добавите =
, то одно чтение файла приведет к разбивке первой строки на столько полей, сколько вы просили.
версия "11.22.33" project = "foo"
Он назначит их указанным переменным, поэтому предоставьте им места для размещения начального поля, которое вы не хотите, и всего, что находится за полем, которое вы действительно хотите, и оно будет аккуратно перетаскивать значение версии туда, где вы этого хотите.
Если вы не предоставите достаточно, в последнем поле все останется непарсированным -
$: echo $x
project="foo"
Если вы хотите удалить кавычки, добавьте также "
к IFS и укажите место для пустого поля, которое будет получено. Чтобы удалить одиночные кавычки, добавить их и т. Д. *
$: IFS="$IFS='\"" read x x version x < file.txt
$: echo "$version"
11.22.33