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

错误:

bash: line 1: [: missing `]'

请帮助我。

谢谢

4

1 回答 1

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.

于 2013-08-03T10:22:13.837 回答