我正在尝试构建一个更新数组中值的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。我假设这与为布尔值赋值有关。 感谢
答案 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。