我想提取$ line中包含的所有值,并将它们放在变量var1,var2,... varn中。我之前使用它来从文件(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 '\n\n\n%s = [ %s %s %s %s \n' "$3" "$var1" "$var2" "$var3" "$var4")
fi
echo "${L1%.}"
答案 0 :(得分: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 ) )