파일을 반복하고 행을 실행하는 방법

파일을 반복하고 행을 실행하는 방법

데이터베이스에서 일부 데이터를 가져오기 위한 bash 명령이 포함된 텍스트 파일이 있습니다. 각 명령은 개행 문자로 구분됩니다. 아래 예를 참조하세요. (명령은 "ls -l", "catwhatever.txt" 등일 수도 있습니다.)

prefetch SRR403012
fastq-dump --fasta 0 SRR403012
my_cpp_program.out SRR403012
...

이러한 모든 명령을 실행하는 bash 스크립트를 어떻게 만들 수 있습니까? 나는 명령을 순차적으로 실행하는 것을 원합니다. 하지만! 한 가지 주의할 점은 많은 수의 파일을 가져오고 있으므로 이러한 명령이 종료되기까지 시간이 좀 걸린다는 것입니다. 따라서 for 루프도 실행이 완료될 때까지 기다려야 합니다.

#!/bin/bash

FILENAME="my_commands.txt"
LINES=$(cat $FILENAME)

for LINE in LINES
do
        execute $LINE
done

답변1

#!/bin/bash명령 목록은 shebang( 맨 윗줄) 이 없더라도 실제로는 쉘 스크립트입니다 . 이것을 셸에 대한 인수로 지정할 수 있으며, 셸은 실행이 완료될 때까지 한 번에 한 줄씩 실행합니다.

bash my_commands.txt

또는 명령에 실제로 필요하지 않은 bash경우

sh my_commands.txt

답변2

bash스크립트는

  1. 라인 순서대로 실행
  2. 당신이하지 않는 한

#!/bin/bashHashbang은 파일 자체를 실행 가능하게 만들고 그 뒤에 오는 명령줄을 해석하는 데 어떤 명령이 사용되었는지 표시하려는 경우에만 필요합니다.

그래서 당신이해야 할 일은bash your-command-file

이 "명령 파일"을 확인하십시오. 다른 이름으로 저장 commands1하고 실행bash commands1

echo -n "Hi, "
sleep 1
echo -n "how "
sleep 1
echo -n "are "
sleep 1
echo "you?"

이것과 비교하십시오 ( commands2):

echo -n "Hi, " &
sleep 1 &
echo -n "how " &
sleep 1 &
echo -n "are " &
sleep 1 &
echo "you?"

보시다시피 후자의 경우 명령은 백그라운드 프로세스로 전송되어 거의 병렬로 실행됩니다 &.

관련 정보