쉘/bash 스크립트를 사용하여 파일을 열고 파일 이름을 가져옵니다.

쉘/bash 스크립트를 사용하여 파일을 열고 파일 이름을 가져옵니다.

특정 파일을 처리하는 스크립트를 만들고 싶습니다. 지금까지는 간단한 파일 열기 대화 상자로 작동하지만 스크립트 자체를 사용하여 파일을 열어 작업을 수행하는 "다음으로 열기" 옵션을 선호합니다.

그렇다면 파일이 스크립트를 시작하고 그 안에 있는 파일 이름을 처리하도록 하는 프로세스는 무엇입니까?

답변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}"

관련 정보