什么出错了? Awk从Temporary变量输出到BASH数组中

时间:2013-06-04 17:09:12

标签: bash awk

我声明了一个临时文件

    TEMPFILE="$(mktemp)"

然后我有一个awk语句用输出填充它... 下一步,我有另一个AWK语句取出特定字段放入一个数组......这是'挣扎'

DATES = ($(awk -F'/' '{print $2}' '${TEMPFILE}'))

我也正在使用CUT解析成一个单独的数组(不确定它是否正在工作)

IPS = ($(cut -f2 $(TEMPFILE)))

我收到了错误:

  

Script12.sh:第36行:意外令牌附近的语法错误`('

     

Script12.sh:第36行:`DATES =($(awk -F'/''{print $ 2}'   '$ {TEMPFILE}'))'*

3 个答案:

答案 0 :(得分:3)

不要在BASH中使用空格进行变量赋值。 =符号

周围不应有空格

答案 1 :(得分:3)

shell对空间非常敏感。赋值的shell语法是

var1=[word1] ...

其中[]表示可选部分,并且......重复。

注意:=符号周围没有空格。

然后,单引号内没有参数扩展(用其值替换$var)。使用双引号:

DATES=($(awk -F/ '{print $2}' "${TEMPFILE}"))

答案 2 :(得分:2)

你不能在shell中的赋值周围添加空格,并且在awk命令行中使用时需要在shell变量周围更改单引号和双引号,即"$TEMPFILE"而不是'${TEMPFILE}'然后不尝试在剪切命令行上执行该变量(考虑$(TEMPFILE)的含义)。