文件中有打印机列表:
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"
-> 这是常数
答案1
使用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
获取您在问题中显示的输出。该sed
命令剥离此输出的第一行并删除所有空格。
上述操作的结果被传递给typeset
它,它将简单地对输出中的变量进行赋值。
然后在调用中使用这些变量piomisc_base
。