给定先前在 shell 脚本中定义的 $LINE,我执行以下操作
var1=$(echo $LINE | cut -d, -f4)
var2=$(echo $LINE | cut -d, -f5)
var3=$(echo $LINE | cut -d, -f6)
我有什么办法可以将它组合成一个命令,剪切只运行一次?就像是
var1,var2,var3=$(echo $LINE | cut -d, -f4,5,6)
内置read
命令可以分配给多个变量:
IFS=, read _ _ _ var1 var2 var3 _ <<< "$LINE"
是的,如果你对数组没问题:
var= ( $(echo $LINE | cut -d, --output-delimiter=' ' -f4-6) )
请注意,这会使var
0-indexed。
尽管将 CSV 转换为 bash 括号可以理解的内容可能会更快更容易$LINE
,然后只需执行var = ( $LINE )
.
编辑:如果您的 $LINE 中有空格,上述内容会导致问题...如果是这样,您需要更加小心,而 AWK 可能是添加引号的更好选择:
var= ( $( echo $LINE | awk IFS=, '{print "\"$4\" \"$5\" \"$6\""}' ) )