java错误非法字符 %ufflb_通过for循环循环时(standard_in)非法字符

我正在尝试获取与流程和一般系统信息有关的统计信息。如果我不进行循环就可以正常运行,但是如果我将其放入循环内,则会给我一系列非法字符的链接错误。

#!/bin/bash

TOTALMEM=$(awk '{ print $1 }' /proc/meminfo)

l=$(ls /proc | grep '[0-9]$')

for pid in $l

do

PID=$pid

cmd=$(cat /proc/$PID/cmdline)

state=$(awk '{ print $3 }' /proc/$PID/stat)

utime=$(awk '{ print $14 }' /proc/$PID/stat)

stime=$(awk '{ print $15 }' /proc/$PID/stat)

pr=$(awk '{ print $18 }' /proc/$PID/stat)

state=$(awk '{ print $3 }' /proc/$PID/stat)

ttime=$(($utime+$stime))

mem=$(cat /proc/$PID/status | grep VmSize: | awk '{ print $2 }')

memp=$(echo "scale=2;$TOTALMEM / $mem" | bc -l)

memp="$memp%"

mem=$(echo "scale=2;$mem / 1024" | bc -l)

cpu=$ttime

usr=$(stat -c '%U' /proc/$PID)

process_string="$PID $usr $pr $mem $state $cpu $memp $ttime $cmd"

echo $process_string

done

这是提示错误的示例。就像这样(随机字符给出错误),每个索引重复一堆(从1到44)。

(standard_in) 1: illegal character: M

(standard_in) 1: illegal character: T

(standard_in) 1: syntax error

(standard_in) 1: illegal character: :

一旦它在第44个索引处结束,它将打印不带$ memp(内存百分比使用量)值的变量$ process_string。似乎每个$ pid(进程)都会发生这种情况。

如果我将其放入for循环中,则它将中断,但如果不这样做,则它不会中断,并且我不知道为什么它会以这种方式工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值