命令在unix中抛出错误

时间:2013-08-03 10:16:35

标签: shell

我们执行了以下命令并收到了一些错误。

k="";while read r;do [ "$k" != "" ] ="$k|";k="$k^$r\$";done<1;awk -v "KEY=$k" -v "CB=CB" -v "CSA=CSA" "BEGIN{FS=\"|\";OFS=\"|\"}{if (\$2 ~ KEY){print \$0>CB}else{print \$0>CSA}}" abc

错误:

bash: line 1: [: missing `]'

请帮我解决这个问题。

由于

1 个答案:

答案 0 :(得分:0)

为什么一行?写得更清楚,你的代码是:

k=""
while read r
do
    [ "$k" != "" ] ="$k|"
    k="$k^$r\$"
done <1

awk -v "KEY=$k" -v "CB=CB" -v "CSA=CSA" \
    'BEGIN{FS="|";OFS="|"}{if ($2 ~ KEY){print $0>CB}else{print $0>CSA}}' abc

问题在于test命令:

[ "$k" != "" ] ="$k|"

该命令的最后一个参数是="$k|",但[要求最后一个参数为]

通过在程序周围使用单引号简化了awk程序 - 您不再需要任何反斜杠。

<1重定向也有点奇怪;它从名为1的文件中读取。