Я нуждаюсь в помощи :) У меня есть файл как это:
AA BC FG
RF TT GH
DD FF HH
(некоторые нумеруют строк и три столбца), и я хочу поместить буквы каждого столбца в переменной шаг за шагом, чтобы дать им как вход в другом сценарии. Таким образом, я хотел бы получить:
для цикла на 1 °:
var1 = AA
var2 = BC
var3 = FG
для цикла на 2 °:
var1 = RF
var2 = TT
var3 = GH
для цикла на 3 °:
var1 = DD
var2 = FF
var3 = HH
Если Вы регистрируете, имеет точно 3 разделенных от пробела объекта на каждой строке (никакие пустые строки, например) затем, необходимо смочь использовать простое while ... read
цикл:
while read -r var1 var2 var3; do
./otherscript "$var1" "$var2" "$var3"
done < "file"
, Если существуют пустые строки, то необходимо, вероятно, считать полные строки и только проанализировать непустые, например,
while IFS= read -r line; do
if [[ -n "$line" ]]; then
read -r var1 var2 var3 <<< "$line"
./otherscript "$var1" "$var2" "$var3"
fi
done < "file"
Полагая, что Ваш входной файл только обеспечивает аргументы сценарию, xargs
разумный выбор в этой ситуации. Позволяет берут этот сценарий в качестве примера:
#!/bin/bash
echo "This is a test"
echo "var1 is $1 " "var 2 is $2 " "var 3 is $3"
Мы можем использовать xargs
с -L1
для того, чтобы проводить 1 строку в файле как аргументы, и --arg-file
указывать файл, содержащий те аргументы. Таким образом:
$ xargs -L 1 -r --arg-file=input.txt ./somescript.sh
This is a test
var1 is AA var 2 is BC var 3 is FG
This is a test
var1 is RF var 2 is TT var 3 is GH
This is a test
var1 is DD var 2 is FF var 3 is HH
Заметьте -r
опция, которая предотвращает xargs
от запущения скрипта на пустых строках, которые содержатся в Вашем входном примере файла.