.xyz 확장자를 가진 특정 파일을 사용하여 .sh를 실행하는 방법

.xyz 확장자를 가진 특정 파일을 사용하여 .sh를 실행하는 방법

abc.sh파일과 입력 소스( ) 가 있습니다 input.xyz.

나는 항상 abc.sh입력 소스(예: I input sh abc.sh input.xyz)를 사용하여 파일을 실행하지만 디렉터리 수가 증가함에 따라 입력 파일 이름을 입력하기에는 너무 게으릅니다.

명령( )을 입력하는 대신 abc.sh 파일에 프로세스를 삽입하여 실행하는 방법은 무엇입니까 sh abc.sh input.xyz?

현재 스크립트는 이렇습니다

INPUT=$1                            

n="1"                               
numb=$(sed -n "$n"p $1)             
#echo $numb
dummy="NULL"

의견을 보내주셔서 감사합니다. 제 실수였습니다. 스크립트를 실행할 때 입력합니다.

sh abc.sh 000.xyz      

실행할 때마다 000.xyz숫자가 달라서 .xyz그냥 고정되네요.

답변1

bash를 사용하면 디렉토리(예: 001.xyz, 002.xyz 등)에서 가능한 모든 입력 파일을 반복할 수 있습니다. 실행 중인 항목을 구성하기 위해 별도의 BASH 스크립트에 넣는 것이 더 쉬울 수 있습니다(예: 배치_run.sh).

예를 들어 루프를 사용하여 for현재 디렉터리의 각 xyz 파일을 반복하고 abc.sh해당 파일에 대해 스크립트를 실행할 수 있습니다.

for input_file in *.xyz
do
    sh abc.sh $input_file
done

여러 개의 디렉토리가 있을 수 있다고 언급하셨습니다. 또한 와일드카드 문자(*)를 확장하여 디렉터리(현재 위치 기준)를 고려할 수도 있습니다.

for input_file in */*.xyz
do
    sh abc.sh $input_file
done

스크립트를 입력 파일과 동일한 디렉터리에서 실행해야 하는 경우 cd루프에서 다양한 작업을 수행할 수도 있습니다(예:).

# remember the original directory before the for loop
original_directory = $(pwd)

# loop through all valid directories containing xyz files
for input_file in */*.xyz
do
    # enter the directory of containing the xyz file
    cd $(dirname $input_file)

    # run the script on the xyz file
    sh abc.sh $(basename $input_file)

    # return to the original directory
    cd ${original_directory}
done

수행하려는 작업과 사양에 따라 다소 복잡해질 수 있지만 forBASH 루프를 사용하여 명령을 자동으로 반복하는 방법에 대한 아이디어를 얻을 수 있기를 바랍니다.

관련 정보