こんにちは、私はbashスクリプトに初めてアクセスし、私のIDを含むテキストファイルを読みたいと$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
このコマンドについて質問がある場合は、それについて具体的に新しい質問を投稿できます。