我们执行了以下命令并收到了一些错误。
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 `]'
请帮我解决这个问题。
由于
答案 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
的文件中读取。