Бих искал да извлека всички стойности, съдържащи се в $ line и да ги постави в променливите var1, var2, ... varn. Аз го използвах по-рано, за да извличам vars от файла (in.txt)
var1=$(awk "{print $1}" < in.txt)
var2=$(awk "{print $2}" < in.txt)
....
varn=$(awk "{print $n}" < in.txt)
Как да променя повикването си за awk, за да използвам $ line вместо in.txt? Опитах ги например
echo $line | var2=$(awk "{print $2}")
или
var2=$(echo $line | awk "{print $2}")
но без успех ...
========== ДЕТАЙЛ ==============
----- извикване на файл:
.....
name=Matrix
line=$(sed -n "/^[T]/ {n;p}" in.txt)
echo "line: " $line
L1=$(./procline_matrix_vars.sh $line 30 $name)
echo "L1: " $L1
------- rocline_matrix_vars.sh:
#!/bin/bash
line=$1
choice=$2
var1=$(echo $line | awk "{print $1}")
var2=$(echo $line | awk "{print $2}")
var3=$(echo $line | awk "{print $3}")
var4=$(echo $line | awk "{print $4}")
if [ $choice == 30 ]; then
L1=$(printf "nnn%s = [ %s %s %s %s n" "$3" "$var1" "$var2" "$var3" "$var4")
fi
echo "${L1%.}"
Отговори:
1 за отговор № 1един възможен начин:
line="aaa bbb ccc"
var=( $line )
echo "${var[1]}"
echo "my array has ${#var[@]} elements"
продукция
bbb
my array has 3 elements
може би пряк път
var=( $( awk "{print $1, $2, $10}" file ) )