Bash for循环与文件中的空格分隔字段

bum*_*bee 0 bash for-loop

我有以下问题,但无法解决它,并没有找到适合的解决方案.

我想做的事:

我有一个文件a.txt.在每一行中有4个空格分隔的字段.cat a.txt会给出以下输出:

A0 A1 A2 A2
B0 B1 B2 B3
C0 C1 C2 C3
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.现在,每个这些东西都应该是一个命令选项的值,我想为文件的每一行运行命令

./command -q A0 -w A1 -e A2 -r A3
Run Code Online (Sandbox Code Playgroud)

但我找不到办法做到这一点.

我试过这个

for i in "`cat a.txt`;do j=($1);./command -q $(j[0]) -w $(j[1]) -e $(j[2]) -r $(j[3]); done
Run Code Online (Sandbox Code Playgroud)

$(j [0])包括a.txt的整个内容(因此显示与cat相同的结果)和$(j [1])等等是空的.

有人有想法吗?(我敢肯定有人;))

Tom*_*ech 5

不要使用for或读取行cat.当你使用bash时,你可以直接读入一个数组,尽管为你的变量命名可能更有意义:

while read -r q w e r; do
    ./command -q "$q" -w "$w" -e "$e" -r "$r"
done < a.txt
Run Code Online (Sandbox Code Playgroud)