특정 파일을 처리하는 스크립트를 만들고 싶습니다. 지금까지는 간단한 파일 열기 대화 상자로 작동하지만 스크립트 자체를 사용하여 파일을 열어 작업을 수행하는 "다음으로 열기" 옵션을 선호합니다.
그렇다면 파일이 스크립트를 시작하고 그 안에 있는 파일 이름을 처리하도록 하는 프로세스는 무엇입니까?
답변1
이것은 일반적인 해결책입니다. 정의된 프로세스에 대해 단 하나의 파일 또는 여러 파일 목록을 처리할 수 있습니다.
#!/bin/bash
BASE=`basename "${0}" ".sh" `
TMP="/tmp/tmp.$$.${BASE}"
if [ $# -eq 0 ]
then
echo "\n Missing command line parameter to provide name of file containing list of files to process."
exit 1
fi
FILE_CONTAINING_FILENAMES="$1"
if [ ! -s "${FILE_CONTAINING_FILENAMES}" ]
then
echo "\n List file provided is empty. Unable to proceed.\n"
exit 1
fi
displayLog()
{
if [ -s "${file_to_process}.log" ]
then
echo "\t Hit return to view log ...\c" ; read k
more "${file_to_process}.log"
echo "\t Hit return to continue ...\c" ; read k
else
echo "\t Nothing capture in logs ..."
fi
}
displayErr()
{
if [ -s "${file_to_process}.err" ]
then
echo "\t Hit return to view log ...\c" ; read k
more "${file_to_process}.err"
echo "\t Hit return to continue ...\c" ; read k
else
displayLog
fi
}
processLoop()
{
process_command "${file_to_process}" >"${file_to_process}.log" 2>"${file_to_process}.err"
RC=$?
if [ ${RC} -eq 0 ]
then
echo "SUCCESS|${file_to_process}|"
displayLog
else
echo "ERROR|RC=${RC}|${file_to_process}|" >&2
displayErr
fi
}
while [ true ]
do
read file_to_process
if [ -z "${file_to_process}" ] ; then echo "\n Reached end of joblist.\n" ; exit 0 ; fi
if [ -s "${file_to_process}" ]
then
processLoop
else
echo "EMPTY|${file_to_process}|" >&2
fi
done <"${FILE_CONTAINING_FILENAMES}"