如何使用 for 循环读取 bash 中文本文件的每一行(包含唯一的 id),将其保存到变量中并随后将其用于

如何使用 for 循环读取 bash 中文本文件的每一行(包含唯一的 id),将其保存到变量中并随后将其用于

您好,我是 bash 脚本编写的新手,尝试读取包含我的 ids 的文本文件,并希望通过将其保存到 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,但如果您对该命令有疑问,您可能想专门发布一个关于该命令的新问题。

相关内容