0
.bashrc
에 포함될 수있는 함수로 변환하고 싶은 쉘 스크립트가 있습니다. 그렇다 #!/bin/bash
에서, 쉘 스크립트는 다음 함수의 내용으로 구성 : 그것은 이미 실행하고 고스트 스크립트로 주어진 PDF 파일을 결합.bashrc에서 쉘 스크립트를 함수로 변환 [쉘 종료]
pdfMerge() {
## usage
if [ $# -lt 1 ]; then
echo "Usage: `basename $0` infile_1.pdf infile_2.pdf ... outfile.pdf"
exit 0
fi
## main
ARGS=("[email protected]") # determine all arguments
outfile=${ARGS[-1]} # get the last argument
unset ARGS[${#ARGS[@]}-1] # drop it from the array
exec gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOUTPUTFILE=$outfile "${ARGS[@]}" # call gs
}
합니다. 그러나 쉘은 함수가 호출 된 후에 항상 종료됩니다 (인수가없는 경우에도). 이 문제를 어떻게 해결할 수 있습니까?
안녕 NCao, 감사에 대한 거들기. 이것은 인수가없는'pdfMerge'를 호출 한 후에'if ... '뒤에있는 부분도 마찬가지로 실행된다는 점을 제외하고는 훌륭하게 작동합니다. 이것은 bash : ARGS : 나쁜 배열 첨자'bash : [0-1] : 나쁜 배열 첨자''**** 초기 장치를 열 수 없습니다, 종료 .' 어떻게 "부드럽게"후 함수를 종료 할 수 있습니다 에코? –
@MariusHofert 참으로'return' 문을 잊어 버렸습니다. 대답이 업데이트되었습니다. –
매우 감사합니다. 'basename $ 0'은 아마도 "pdfMerge"로 대체되어야합니다. –