我有一个shell脚本,我想将其转换为可以包含在.bashrc
中的函数。除了#!/bin/bash
之外,shell脚本包含以下函数的内容:
pdfMerge () {
## usage
if [ $# -lt 1 ]; then
echo "Usage: `basename $0` infile_1.pdf infile_2.pdf ... outfile.pdf"
exit 0
fi
## main
ARGS=("$@") # 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
}
它已经运行并将给定的pdf文件与ghostscript相结合。但是,shell在调用函数后总是退出(如果没有给出参数,也是如此)。如何解决这个问题?
答案 0 :(得分:6)
该脚本旨在作为独立的可执行文件运行,因此在完成后退出。如果要将其用作函数,则需要删除强制执行此行为的两个元素:exit 0
(将其替换为return
)和exec
,以便调用{ {1}}:
gs -dBATCH ...