簡體   English   中英

Bash腳本變量輸出不起作用

[英]Bash script variable output not working

我有一個bash腳本,它解析包含有關服務器上運行的進程的信息的文件。 一切都有效,除了輸出。

目標輸出
tomcat7 Running Monitored 3025 18d 2h 16m 3.6% 0.0%

實際輸出的是什么
0.0%2h 16m ing

腳本部分進行解析和輸出

for SERVER in $SERVERS ; do
    SYSTEM=$(sed -n '/System/{p; n;p; n;p; n;p; n;p; n;p}' $H_DIR/$SERVER.txt)
    sed -n '/Process/{p; n;p; n;p; n;p; n; n;p; n;n;n; n;p; n; n;p}' $H_DIR/$SERVER.txt > $H_DIR/procs.txt
    split --lines=7 $H_DIR/procs.txt $H_DIR/procs.txt.
    for PROC in $H_DIR/procs.txt.?? ; do
        PROCESS=$(cat $PROC | head -1 | tail -1 | cut -d "'" -f2)
        STATUS=$(cat $PROC | head -2 | tail -1 | awk '{ print $NF }')
        MONITOR=$(cat $PROC | head -3 | tail -1 | awk '{ print $NF }')
        PID=$(cat $PROC | head -4 | tail -1 | awk '{ print $NF }')
        UPTIME=$(cat $PROC | head -5 | tail -1 | awk '{ print substr($0, index($0, $2)) }')
        PCPU=$(cat $PROC | head -6 | tail -1 | awk '{ print $NF }')
        PMEM=$(cat $PROC | head -7 | tail -1 | awk '{ print $NF }')
        echo $PROCESS $STATUS $MONITOR $PID $UPTIME $PCPU $PMEM
    done
    rm -f $H_DIR/procs.*
    rm -f $H_DIR/$SERVER.txt
done

原始文件正在解析

Process 'tomcat7'
  status                            Running
  monitoring status                 Monitored
  pid                               3025
  uptime                            18d 2h 30m
  memory percent                    3.6%
  cpu percent                       0.0%

預感 - 您的輸入文件具有DOS回車換行組合。

我將其添加到您的文件中並獲得了相同的結果。

有關如何刪除回車,請參閱此問題:

在Unix中刪除回車

使用建議的tr -d '\\r'方法來刪除回車符(並且可能同時刪除單引號),您可以執行以下操作:

echo $(tr -d "\r\'" < $PROC | awk 'NR==5{print substr($0,index($0,$2))}{print $NF}')

或者如果您需要分配的每個變量,那么這樣的東西

VARS=$(tr -d "\r\'" < $PROC | awk 'NR==5{print substr($0,index($0,$2))}{print $NF}')
read PROCESS STATUS MONITOR PID UPTIME PCPU PMEM <<<$VARS
echo $PROCESS $STATUS $MONITOR $PID $UPTIME $PCPU $PMEM

無論哪種方式,輸出都是

tomcat7 Running Monitored 3025 18d 2h 30m 30m 3.6% 0.0%

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM