shell腳本自動導入批量命令到交互程序並輸出結果

1.用途說明


工作中經常會有一些交互式程序,查看一些系統參數,監控數據等等;人工敲命令查看,查看次數不是很頻繁到時沒多大問題,當需要頻繁查看時,查看參數固定我們很容易想到腳本自動執行命令,並返回結果。

記錄文檔,以備不時之需。

2.測試程序


#include <stdio.h>
#include <stdlib.h>

#define MAX_LEN    100

int main(int argc, char *argv[])
{
    char str[100]={0};
    fgets(str,MAX_LEN,stdin);
    printf(".[CMD1]test1 is apple\n");
    
    fgets(str,MAX_LEN,stdin);
    printf(".[CMD2]test2 is banana\n");
    
    fgets(str,MAX_LEN,stdin);
    printf(".[CMD3]test3 is pineapple\n");

    return 0;
}

這段代碼主要是模擬交互查詢程序;

編譯:
gcc test.c -o test

3.腳本


#!/bin/sh

SLEEP=0.001

read_test_args()
{
    output=$( (
        echo "show test1"; sleep $SLEEP
        echo "show test2"; sleep $SLEEP
        echo "show test3"; sleep $SLEEP
    )| ./test ) 
    #output 內容是沒有處理的原始輸出,需要進一步處理成友好輸出方式
    echo $output
    status1=$(echo "$output" | awk -F "." '{print $1}')
    status2=$(echo "$output" | awk -F "." '{print $2}')
    status3=$(echo "$output" | awk -F "." '{print $3}')
    echo "$status1"
    echo "$status2"
    echo "$status3"
}
read_test_args

4.結果

在這裏插入圖片描述

5.總結

上面只是一個簡單實例,爲了處理方便,有意在輸出前面加個“.”,目的是腳本後面進一步處理成友好的輸出方式比較方便,實際用途中根據輸出特徵自行運用腳本處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章