Linux 整个数组被回送,但不是it-Shell脚本的元素
我在Shell脚本BASH中有这个结构Linux 整个数组被回送,但不是it-Shell脚本的元素,linux,bash,shell,Linux,Bash,Shell,我在Shell脚本BASH中有这个结构 i=0 while read linha_reg do REG_ADDRESS=$(echo $linha_reg | cut -f1 -d ' ') [ $REG_ADDRESS -lt 16] && T[$i]=$REG_ADDRESS || S[$i]=$REG_ADDRESS i=$((i+1)) done < register.txt while read linha_inst do RS=
i=0
while read linha_reg
do
REG_ADDRESS=$(echo $linha_reg | cut -f1 -d ' ')
[ $REG_ADDRESS -lt 16] && T[$i]=$REG_ADDRESS || S[$i]=$REG_ADDRESS
i=$((i+1))
done < register.txt
while read linha_inst
do
RS=$(echo $linha_inst | cut -f4 -d ' ')
RS=$(echo $RS | cut -f1 -d ',')
RS_INDEX=${RS:2:2}
RS_LETTER=${RS:1:1}
[ "$RS_LETTER" == "s" ] && echo ${S[$RS_INDEX]}
done < instruction.txt
它根据echo的请求输出整个阵列。如果我写
echo ${S[3]}
也不起作用
我迷路了,因为我不知道是什么解释了这一点,我希望它只返回一个元素,就像大片段一样,但由于未知的原因它不会输出
Cheers要添加到数组中,请使用
var+=(value)
like。使用var[$i]=value
会产生稀疏数组,其中一些索引未定义
此外:
- !李>
- 在Bash中,您还可以使用类似于
some_命令的命令,无论是分配给
还是T
,都可以递增S
;这将在未分配给的数组中留下间隙。请使用$i
检查echo${#S[@]}
中有多少个元素,以验证是否有多个元素。那你就知道会有多少了。您可能还想发布register.txt和instruction.txt的示例行。使用S
做子字符串提取应该做的事情是一种不可靠的方法。哦,你的索引不是0-7!对于echo | cut…
和T[x]
需要两个不同的计数器,以保持索引的直线性。对于S[y]
使用S
,对于i
使用T
,以保持索引的直线性,例如j
--或--i=0;j=0。。[$REG_ADDRESS-lt 16]&&{T[$i]=$REG_ADDRESS;((i++);}{S[$j]=$REG_ADDRESS;((j++);}
,然后使用声明-a T;声明-a S
和T+=$REG\u ADDRESS
@DavidC.RankinS+=$REG\u ADDRESS
,否则只需在T+=($REG\u ADDRESS)
上执行字符串串联即可。${T[0]}
echo ${S[3]}
if a then b else c fi