for 루프를 사용하여 bash(고유 ID 포함)에서 텍스트 파일의 각 줄을 읽고 변수에 저장한 후 나중에 다음과 같이 사용하려면 어떻게 해야 합니까?

for 루프를 사용하여 bash(고유 ID 포함)에서 텍스트 파일의 각 줄을 읽고 변수에 저장한 후 나중에 다음과 같이 사용하려면 어떻게 해야 합니까?

안녕하세요, 저는 bash 스크립팅을 처음 접하고 내 ID가 포함된 텍스트 파일을 읽으려고 하며 이를 a에 저장하고 $variable이를 사용하여 일부 데이터를 가져오는 방식으로 반복하고 싶습니다.

#!/bin/bash

file = "Cell_ids.text"
i=1

for i in file; do

        i=$((i+1))  
         **id** = **$i**




sbatch --mem=4G --time=100 -o fetch_data.%j.out -e fetch_data.%j.err -J fetch_data  <<EOF
#!/bin/bash
java -jar /docs/some-tools.jar --library ${**id**}
EOF

답변1

변수 선언 시 기호 주위에 공백이 허용되지 않으므로 =변수 file가 설정되지 않습니다. $반복하려는 경우 기호 앞에 기호를 추가해야 합니다.

루프 for도 절대 닫히지 않습니다. 루프의 끝을 나타내려면 키워드를 사용하세요 done. 무엇을 하려는지 잘 모르겠지만 **id** = **$i**스크립트가 다음과 같이 보이길 원할 것 같습니다.

#!/bin/bash

file="Cell_ids.text"

for i in $(cat $file); do
    sbatch \
        --mem=4G \
        --time=100 \
        -o fetch_data.%j.out \
        -e fetch_data.%j.err \
        -J fetch_data << EOF
#!/bin/bash
java -jar /docs/some-tools.jar --library $i
EOF
done

i=1자동으로 설정되므로 루프 전에 선언할 필요가 없기 때문에 제거했습니다 . 나는 그것에 익숙하지 않지만 sbatch이 명령에 대해 질문이 있는 경우 이에 대해 구체적으로 새로운 질문을 게시할 수 있습니다.

관련 정보