안녕하세요, 저는 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
이 명령에 대해 질문이 있는 경우 이에 대해 구체적으로 새로운 질문을 게시할 수 있습니다.