单行while循环更新数组

时间:2017-02-05 15:29:25

标签: arrays bash shell while-loop scripting

我正在尝试构建一个更新数组中值的while循环但是我一直收到命令not found错误。

i=1
bool=true
declare -a LFT
declare -a RGT
while read -r line; do
  ${LFT[$i]}=${line:0:1}; ${RGT[$i]}=$(wc -l < temp$i.txt);
  if [ ${LFT[$i]} -ne ${RGT[$i]} ]; then
    $bool=false;
  fi;
  ((i=i+1));
done<output2.txt

我正在读取的文件在每一行包含一个数字,我想填充数组LFT,每个条目都是数字。数组RGT应填充表示为temp * .txt的文件的行数。我想测试以确保这两个数组的每个条目都相同。

但是,我一直收到错误:command = #not found,其中#是文件中行上的任何数字。我是否错误地为数组赋值?另外,我收到错误:找不到命令true = false。我假设这与为布尔值赋值有关。 感谢

1 个答案:

答案 0 :(得分:1)

问题在于以下几点:

${LFT[$i]}=${line:0:1}; ${RGT[$i]}=$(wc -l < temp$i.txt);

将其更改为:

LFT[$i]=${line:0:1}; RGT[$i]=$(wc -l < temp$i.txt);

shell中的有效赋值应为:

var=<expression>

而不是

$var=<expression> ## this will be interpreted by the shell as a command

这是Bash程序员常犯的错误之一。这里有更多Bash pitfalls