![for 루프를 사용하여 bash(고유 ID 포함)에서 텍스트 파일의 각 줄을 읽고 변수에 저장한 후 나중에 다음과 같이 사용하려면 어떻게 해야 합니까?](https://linux55.com/image/205716/for%20%EB%A3%A8%ED%94%84%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20bash(%EA%B3%A0%EC%9C%A0%20ID%20%ED%8F%AC%ED%95%A8)%EC%97%90%EC%84%9C%20%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EA%B0%81%20%EC%A4%84%EC%9D%84%20%EC%9D%BD%EA%B3%A0%20%EB%B3%80%EC%88%98%EC%97%90%20%EC%A0%80%EC%9E%A5%ED%95%9C%20%ED%9B%84%20%EB%82%98%EC%A4%91%EC%97%90%20%EB%8B%A4%EC%9D%8C%EA%B3%BC%20%EA%B0%99%EC%9D%B4%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
안녕하세요, 저는 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
이 명령에 대해 질문이 있는 경우 이에 대해 구체적으로 새로운 질문을 게시할 수 있습니다.