【发布时间】:2012-09-11 06:45:26
【问题描述】:
我使用以下行从字符串创建字段数组:
var=$(echo $FieldName | awk -F";" '{print $1,$2,$3,$4,$5,$6,$7,$8,$9}')
$FieldName 是一个字符串,其字段由分号分隔。
当$FieldName 包含没有空格的字符串时,它会正常运行。
问题是当它包含任何嵌入的空白字符时,脚本会将空白视为换行符。
例如:
$FieldName = aa;bcd;cal;da;ea;fa;ga;ha;ia
给出[aa,bcd,cal,da,ea,fa,ga,ha,ia],这是预期的。
但是$FieldName = aa;bcd;cal;da;ea;fa;ga;ha;ia <= ia2
给[aa,bcd,cal,da,ea,fa,ga,ha,ia] , [<=, , , , , , , , ] and [ia2, , , , , , , , ]
有什么想法吗?
【问题讨论】:
-
你试过在
echo中引用$FieldName吗? -
这不会改变任何事情。空格仍然会产生同样的问题。
-
就像@chepner 也暗示的那样,根本问题可能是您使用
echo $value而不是echo "$value"和正确的双引号。始终引用变量插值,除非您特别要求 shell 对值执行分词和通配符扩展。 -
我认为问题在于你用
$var做什么——你用$var做什么?稍后在脚本中使用$var时是否引用它?你在用printf吗?