Ksh

轉換“lsque -q”命令的輸出

  • February 17, 2017

文件中有一個列印機列表:

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

引用自:https://unix.stackexchange.com/questions/345730