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

Bash for循环与文件中的空格分隔字段,bash,for-loop,Bash,For Loop,我有以下问题,但无法解决,也找不到合适的解决方案 我想做的是: 我有一个文件a.txt。每行中有4个空格分隔的字段。cat a.txt将提供以下输出: A0 A1 A2 A2 B0 B1 B2 B3 C0 C1 C2 C3 到目前为止,一切顺利。现在,这些东西中的每一个都应该是一个命令选项的值,我想对文件中的每一行运行命令,如下所示 ./command -q A0 -w A1 -e A2 -r A3 但我没有找到一种方法来做到这一点 我试过这个 for i in "`cat a.txt`;d

我有以下问题,但无法解决,也找不到合适的解决方案

我想做的是:

我有一个文件a.txt。每行中有4个空格分隔的字段。cat a.txt将提供以下输出:

A0 A1 A2 A2
B0 B1 B2 B3
C0 C1 C2 C3
到目前为止,一切顺利。现在,这些东西中的每一个都应该是一个命令选项的值,我想对文件中的每一行运行命令,如下所示

./command -q A0 -w A1 -e A2 -r A3
但我没有找到一种方法来做到这一点

我试过这个

for i in "`cat a.txt`;do j=($1);./command -q $(j[0]) -w $(j[1]) -e $(j[2]) -r $(j[3]); done
但是$(j[0])包括a.txt的全部内容(因此显示与cat相同的结果),并且$(j[1])等为空


有人有主意吗?(我肯定有人读过;)

不要用
for
cat
来读行。在使用bash时,可以直接读取数组,不过命名变量可能更有意义:

while read -r q w e r; do
    ./command -q "$q" -w "$w" -e "$e" -r "$r"
done < a.txt
读取时-r q w r;做
./命令-q“$q”-w“$w”-e“$e”-r“$r”
完成
不要使用
for
cat
读取行。在使用bash时,可以直接读取数组,不过命名变量可能更有意义:

while read -r q w e r; do
    ./command -q "$q" -w "$w" -e "$e" -r "$r"
done < a.txt
读取时-r q w r;做
./命令-q“$q”-w“$w”-e“$e”-r“$r”
完成
您的语法看起来很像猜测@汤姆费内克:当然可以,但不然就行了。你的语法看起来很像猜测@TomFenech:当然可以,但是如果不这样的话就行了。在这种情况下,变量周围的双引号可以跳过,因为不能使用
IFS
。虽然引用太多总比引用太少好:)@joepd在文本文件中有一列是
*
:)的情况下,它仍然可以保护您。检查!谢谢,汤姆·费内克@汤姆费内克:非常感谢!它可以工作,我不需要自己运行几百次。在这种情况下,可以跳过变量周围的双引号,因为不需要玩
IFS
。虽然引用太多总比引用太少好:)@joepd在文本文件中有一列是
*
:)的情况下,它仍然可以保护您。检查!谢谢,汤姆·费内克@汤姆费内克:非常感谢!它可以工作,我不需要自己运行几百次。