脚本报错:Syntax error: redirection unexpected

本文探讨了一个在bash环境下使用awk命令时遇到的问题,即在命令中使用三重尖括号‘<<<<<’导致脚本无法正常运行。通过分析并修改脚本中的bash环境设置,成功解决了该问题,并提供了详细的解决步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


我写的是这样一个脚本,目的是要将每台服务器上每个月总发量位居前200名的域 发送量 发送比例 插入到数据库里面

脚本如下:(涉及到脚本的调用)

#!/bin/sh
DATE=`date +"%Y-%m-%d %H:%M:%S"`
TODAY=`date +%Y-%m-%d`
HOST=`hostname`
awk '{sum[$2]+=$1;total+=$1}END{for (name in sum) {printf("%30s%10d%15s", name,sum[name],sum[name]/total*100"%\n")}}' /home/sysadmin/zhaoyj/statistic/output/statistic_send_pre200.log.201107 |sort -k2nr
|head -200 > /tmp/tongji.txt
while read line
do
DomainName=`awk '{print $1}' <<< "$line"`
SendTotal=`awk '{print $2}' <<< "$line"`
Percent=`awk '{print $3}' <<< "$line"`
$INSERT "$TODAY" "$HOST" 'Statistic_Send_Pre200' '$DomainName' $SendTotal '$Percent'
done < /tmp/tongji.txt


要插入的数据库属性为


当我执行脚本的时候确报错:


根据上述提示应该是“<<<”符号的问题

但是我单独拿出来的时候:

# awk '{print $1}' <<< "shengrui.cc 91 0.0207361%"
shengrui.cc

没有问题啊


这是为什么啊?我就纳闷了

后来我才明白,原来是bash环境的问题

我把/bin/sh 改为/usr/local/bin/bash 之后就可以了




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值