파일에는 프린터 목록이 있습니다.
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
.