Awk shell中的整数预期错误
我正在构建以下脚本,以发送有关java堆空间的警报Awk shell中的整数预期错误,awk,sed,sh,Awk,Sed,Sh,我正在构建以下脚本,以发送有关java堆空间的警报 PID=$(ps -ef | grep [t]omcat | awk '{print $2}') echo $PID /usr/java/bin/jstat -gcutil $PID | awk 'FNR == 2 {print $3, $4}' | while read output; do espace=$(echo $output | awk '{print $1}' | sed 's/.\{3\}$//' ) ospace=$(ech
PID=$(ps -ef | grep [t]omcat | awk '{print $2}')
echo $PID
/usr/java/bin/jstat -gcutil $PID | awk 'FNR == 2 {print $3, $4}' | while read output; do
espace=$(echo $output | awk '{print $1}' | sed 's/.\{3\}$//' )
ospace=$(echo $output | awk '{print $2}' | sed 's/.\{3\}$//' )
echo $espace
echo $ospace
if [ "$opsace" -ge "85" ]; then
echo "Old Gen Heap getting full on $(hostname) on $(date)" >> /tmp/$$
fi
done
if [ -s /tmp/$$ ]
then
sendEmail -f blah@blah.com \
-t $EMAILTO \
-u "Disk Space Alert at $(hostname)" \
-s $SMTP \
-xu $SMTP_USER \
-xp $SMTP_PASS \
-l /tmp/$$.log \
-o tls=yes -q \
< /tmp/$$ &
fi
我不知道为什么它认为77不是整数。它是十进制的,所以我用sed去掉变量的最后3个字符
任何想法都将不胜感激。谢谢
if [ "$opsace" -ge "85" ]; then
# ^^
…不是
if [ "$ospace" -ge "85" ]; then
# ^^
因此,它正在运行:
if [ '' -ge 85 ]
…空字符串实际上不是整数
…不是
if [ "$ospace" -ge "85" ]; then
# ^^
因此,它正在运行:
if [ '' -ge 85 ]
…空字符串实际上不是整数
…不是
if [ "$ospace" -ge "85" ]; then
# ^^
因此,它正在运行:
if [ '' -ge 85 ]
…空字符串实际上不是整数
…不是
if [ "$ospace" -ge "85" ]; then
# ^^
因此,它正在运行:
if [ '' -ge 85 ]
…空字符串实际上不是整数。在运行脚本时使用
set-x
,或者bash-x yourscript
,并给出问题行的确切输出。(这将显示回声
模糊的任何隐藏字符)。实际上,这是一个打字错误opsace
不是ospace
(顺便说一句,这是一个根本不调用awk的行上的错误;为什么它被这样标记?另一方面,从awk到sed的管道是愚蠢的;awk
可以做任何事情sed
可以和更多)…另一方面,echo$output
是错误的;你想要的是echo“$output”
,除非你想把globs扩展,标签和换行符变成空格,狗和猫住在一起,等等。即使这样也不完美——例如,如果output=-n
,那么即使echo“$output”
也不会起任何作用printf“%s\n'$output”
是一个更可靠的替代方案。运行脚本时使用set-x
,或bash-x yourscript
,并给出问题行的确切输出。(这将显示回声
模糊的任何隐藏字符)。实际上,这是一个打字错误opsace
不是ospace
(顺便说一句,这是一个根本不调用awk的行上的错误;为什么它被这样标记?另一方面,从awk到sed的管道是愚蠢的;awk
可以做任何事情sed
可以和更多)…另一方面,echo$output
是错误的;你想要的是echo“$output”
,除非你想把globs扩展,标签和换行符变成空格,狗和猫住在一起,等等。即使这样也不完美——例如,如果output=-n
,那么即使echo“$output”
也不会起任何作用printf“%s\n'$output”
是一个更可靠的替代方案。运行脚本时使用set-x
,或bash-x yourscript
,并给出问题行的确切输出。(这将显示回声
模糊的任何隐藏字符)。实际上,这是一个打字错误opsace
不是ospace
(顺便说一句,这是一个根本不调用awk的行上的错误;为什么它被这样标记?另一方面,从awk到sed的管道是愚蠢的;awk
可以做任何事情sed
可以和更多)…另一方面,echo$output
是错误的;你想要的是echo“$output”
,除非你想把globs扩展,标签和换行符变成空格,狗和猫住在一起,等等。即使这样也不完美——例如,如果output=-n
,那么即使echo“$output”
也不会起任何作用printf“%s\n'$output”
是一个更可靠的替代方案。运行脚本时使用set-x
,或bash-x yourscript
,并给出问题行的确切输出。(这将显示回声
模糊的任何隐藏字符)。实际上,这是一个打字错误opsace
不是ospace
(顺便说一句,这是一个根本不调用awk的行上的错误;为什么它被这样标记?另一方面,从awk到sed的管道是愚蠢的;awk
可以做任何事情sed
可以和更多)…另一方面,echo$output
是错误的;你想要的是echo“$output”
,除非你想把globs扩展,标签和换行符变成空格,狗和猫住在一起,等等。即使这样也不完美——例如,如果output=-n
,那么即使echo“$output”
也不会起任何作用printf“%s\n”“$output”
是一个真正可靠的替代方案。