特定のインデックスの配列が空の場合、値を割り当てようとするとエラーが発生しますcommand not found
。
while IFS=$';' read -r -a array
do
# if empty set Not Available
if [[ -z ${array[6]} ]] ; then
$array[6]="Not Available"
echo barcode is ${array[6]}
fi
echo ' <Product>' >> $file_out
echo ' <Reference>'${array[0]}'</Reference>' >> $file_out
echo ' <Name>'${array[1]}'</Name>' >> $file_out
echo ' <Category>'${array[2]}'</Category>' >> $file_out
echo ' <Price>'${array[3]}'</Price>' >> $file_out
echo ' <Scale>'${array[4]}'</Scale>' >> $file_out
echo ' <Manufacture>'${array[5]}'</Manufacture>' >> $file_out
echo ' <Barcode>'${array[6]}'</Barcode>' >> $file_out
echo ' <DatePub>'${array[7]}'</DatePub>' >> $file_out
echo ' <Image>'${array[8]}'</Image>' >> $file_out
echo ' <Availability>'$availability'</Availability>' >> $file_out
echo ' <Supplier>'$Supplier'</Supplier>' >> $file_out
echo ' </Product>' >> $file_out
done < $file_in
このコードは「値の割り当て部分」を除いてうまく機能します。
# if empty set Not Available
if [[ -z ${array[6]} ]] ; then
$array[6]="Not Available"
echo barcode is ${array[6]}
fi
間違い:
./convert-csv-to-xml: row 20: LM113A[6]=Not Available: command not found
barcode is
20行目は次のとおりです。
$array[6]="Not Available"
答え1
$
配列に文字列割り当てを使用する必要はありません。
試してみてください
array[6]="Not Available"