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