Ksh
轉換“lsque -q”命令的輸出
文件中有一個列印機列表:
0:root@SERVER:/root #cat printernames.txt PRINTQ1 PRINTQ2 PRINTQ3 ... 0:root@SERVER:/root #
並且有一個產生此輸出的命令(有關給定列印機的資訊,例如 PRINTQ1,具有 = 的行的順序可能與此不同):
0:root@SERVER:/root #lsque -q PRINTQ1 PRINTQ1: device = PRINTQ1.dev host = AL1 l_statfilter = /usr/lib/lpd/aixlong rq = LPT1_PASSTHRU s_statfilter = /usr/lib/lpd/aixshort up = TRUE 0:root@SERVER:/root #
我們需要
lsque -q PRINTERNAME
以下命令中的命令輸出:/usr/sbin/piomisc_base mkpq_other -q"PRINTQ1" -d "PRINTQ1.dev" \ -b"/usr/lpd/rembak" -u"TRUE" -h"PRINTQ1" -r"PRINTQ1" \ -s"/usr/lib/lpd/aixshort" -l"/usr/lib/lpd/aixlong"
問題:我們如何從 lsque 命令的輸出生成 piomisc_base 命令?只需將值放在 piomisc_base 的正確位置。
所以基本上創建我們稍後將執行的 piomisc_base 命令(在另一台伺服器上)。
-b"/usr/lpd/rembak"
-> 這是恆定的
使用
ksh93
:#!/bin/ksh -e queue="$1" typeset $( lsque -q "$queue" | sed -e '1d' -e 's/ //g' ) /usr/sbin/piomisc_base mkpq_other \ -q"$queue" \ -d "$device" \ -b"/usr/lpd/rembak" \ -u"$up" \ -h"$queue" \ -r"$queue" \ -s"$s_statfilter" \ -l"$l_statfilter"
隊列取自命令行並保存在變數中
queue
。然後將此值用於lsque
獲取您在問題中顯示的輸出。ssed
命令會刪除此輸出的第一行並刪除所有空格。將上述操作的結果傳遞給
typeset
它將簡單地對輸出中的變數進行賦值。這些變數然後在呼叫中使用
piomisc_base
。