执行PCT=`cat /tmp/ASM.txt | grep FRA | grep -v grep | awk '{ print $2 }'`後,echo "$PCT"没有输出
PCT=`cat/tmp/ASM.txt|grepFRA|grep-vgrep|awk'{print$2}'`echo"$PCT">>/tmp/ASM_alert.txt...
PCT=`cat /tmp/ASM.txt | grep FRA | grep -v grep | awk '{ print $2 }'`
echo "$PCT" >> /tmp/ASM_alert.txt
检视ASM_alert.txt里面是空的
但我直接执行cat /tmp/ASM.txt | grep FRA | grep -v grep | awk '{ print $2 }'是有结果输出的....
#!/BIN/SH
su - oracle -c "sqlplus / as sysdba <<EOF
set feedback off;
set heading off;
set echo off;
set term off;
set linesize 255;
set pagesize 200;
spool /tmp/ASM_percentage.txt;
select name,ROUND(100 * (((total_mb/1024) - (free_mb/1024)) / (total_mb/1024)),2) from v\\\$asm_diskgroup;
spool off;
quit
EOF
#FRADGPCT=`cat /tmp/ASM_percentage.txt | grep MPDB_FRADG | grep -v grep | awk '{ print $2 }' 2>&1`
FRADGPCT="123"
echo "$FRADGPCT" >> /tmp/ASM_alert.txt
这样里面也是空的......不知道是不是中间的命令影响了.... 展开
echo "$PCT" >> /tmp/ASM_alert.txt
检视ASM_alert.txt里面是空的
但我直接执行cat /tmp/ASM.txt | grep FRA | grep -v grep | awk '{ print $2 }'是有结果输出的....
#!/BIN/SH
su - oracle -c "sqlplus / as sysdba <<EOF
set feedback off;
set heading off;
set echo off;
set term off;
set linesize 255;
set pagesize 200;
spool /tmp/ASM_percentage.txt;
select name,ROUND(100 * (((total_mb/1024) - (free_mb/1024)) / (total_mb/1024)),2) from v\\\$asm_diskgroup;
spool off;
quit
EOF
#FRADGPCT=`cat /tmp/ASM_percentage.txt | grep MPDB_FRADG | grep -v grep | awk '{ print $2 }' 2>&1`
FRADGPCT="123"
echo "$FRADGPCT" >> /tmp/ASM_alert.txt
这样里面也是空的......不知道是不是中间的命令影响了.... 展开
2个回答
展开全部
那是因为你执行cat /tmp/ASM.txt | grep FRA | grep -v grep | awk '{ print $2 }' 这个语句有多行输出,如果有单行输出的话,PCT就会有结果,多行输出就咩有结果。
实际上,你可以直接将结果导入到ASM_alert.txt中
cat /tmp/ASM.txt | grep FRA | grep -v grep | awk '{ print $2 }' >> /tmp/ASM_alert.txt
在多说一句,如果有多行输出的话,直接使用echo是不会有输出的,需要使用循环遍历输出才行
实际上,你可以直接将结果导入到ASM_alert.txt中
cat /tmp/ASM.txt | grep FRA | grep -v grep | awk '{ print $2 }' >> /tmp/ASM_alert.txt
在多说一句,如果有多行输出的话,直接使用echo是不会有输出的,需要使用循环遍历输出才行
更多追问追答
追问
FRADGPCT="123"
echo "$FRADGPCT" >> /tmp/ASM_alert.txt
这样里面也是空的......不知道是不是中间的命令影响了....
追答
这个是有问题的,如果你有权限的话,这句话是能够正常执行的
里面不应该没有内容,我自己在机器上操作过,里面是有内容的
你可以先不使用重定向到/tmp目录下,重定向到有权限执行的文件里面看看
展开全部
多行输出也可以的,只要加了双引号"$PCT",试试即知。
我能想到的一个可能的解释是:
执行这个语句的输出为标准错误输出(典型情况就是/tmp/ASM.txt文件不存在),必须要将标准错误输出流合并到标准输出流才能被获取到。
试试这样:
PCT=`cat /tmp/ASM.txt | grep FRA | grep -v grep | awk '{ print $2 }' 2>&1`
echo "$PCT" >> /tmp/ASM_alert.txt
最后加个 sync 语句,强制将数据从缓存写入文件。
可能内容比较多。
更多追问追答
追问
FRADGPCT="123"
echo "$FRADGPCT" >> /tmp/ASM_alert.txt
这样也是空的,....
追答
1)你是不是还有其他脚本会去同时操作/tmp/ASM_alert.txt这个文件?
2)/tmp/ASM_alert.txt这个文件,当前用户是否具备写权限?
3)最后加一句 sync 试试,强制将数据从缓存写入文件。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询