0

我声明一个临时文件

    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}'))'*

4

3 回答 3

3

不要在 BASH 中使用空格进行变量赋值。=标志周围不应有空格

于 2013-06-04T17:16:51.443 回答
3

外壳对空间敏感。赋值的 shell 语法是

var1=[word1] ...

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

=注意:标志周围没有空格。

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

DATES=($(awk -F/ '{print $2}' "${TEMPFILE}"))
于 2013-06-04T17:18:32.547 回答
2

您不能在 shell 中的分配周围放置空格,并且在 awk 命令行中使用时,您需要将 shell 变量周围的单引号更改为双引号,即"$TEMPFILE"不要'${TEMPFILE}'尝试在 cut 命令行上执行该变量(想想什么$(TEMPFILE)方法)。

于 2013-06-04T17:18:18.813 回答