シェルスクリプトで以前に定義された $LINE を指定すると、次のようになります
var1=$(echo $LINE | cut -d, -f4)
var2=$(echo $LINE | cut -d, -f5)
var3=$(echo $LINE | cut -d, -f6)
カットが 1 回だけ実行される 1 つのコマンドに結合する方法はありますか? 何かのようなもの
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 になることに注意してください。
ただし、CSV$LINE
を bash 括弧が理解できるものに変換してからvar = ( $LINE )
.
編集: $LINE にスペースがある場合、上記は問題を引き起こします...その場合は、もう少し注意する必要があり、AWK は引用符を追加するためのより良い選択かもしれません:
var= ( $( echo $LINE | awk IFS=, '{print "\"$4\" \"$5\" \"$6\""}' ) )