Shell 命令在unix中引发错误

Shell 命令在unix中引发错误,shell,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 请帮我做这个 谢谢为什么只有一行?您的代码编写得更加理智: k="" whi

我们执行了下面的命令,并得到一些错误

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
请帮我做这个


谢谢

为什么只有一行?您的代码编写得更加理智:

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
命令的最后一个参数是
=“$k |”
,但
[
要求最后一个参数是
]

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


谢谢Jonathan Leffler。。。请更正命令,因为我没有完全理解你的意思。@vishal,你能解释一下你想用
[“$k”!=”]=“$k |”
做什么吗?因为你想做的事情非常非常不清楚,我帮不了你。也许您已经想到了条件行的
[“$k”!=”]&&k=“$k |”
;如果字符串不是空的,这将在添加插入符号、读取的行和美元之前,在字符串后面添加管道
|
。但不清楚你在追求什么;这是很多分隔符。
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
[ "$k" != "" ] ="$k|"