Bash Shell脚本自增量计数作为数组索引
下面是一个简单的shell脚本代码,它迭代收入文件并将该行保存到数组中。但是line4不应该是这样的吗 cusips[$i]而不是cusips[i]?还是没关系?看来两个都起作用了 谢谢, 约翰Bash Shell脚本自增量计数作为数组索引,bash,shell,Bash,Shell,下面是一个简单的shell脚本代码,它迭代收入文件并将该行保存到数组中。但是line4不应该是这样的吗 cusips[$i]而不是cusips[i]?还是没关系?看来两个都起作用了 谢谢, 约翰 区别在于在计算算术表达式之前是否替换该值 例如,这些都是相同的: array=(1 1 2 3 5) i=0 echo "${array[i]}" # Look up the variable i echo "${array[$i]}" # Substitute the value of i: l
区别在于在计算算术表达式之前是否替换该值 例如,这些都是相同的:
array=(1 1 2 3 5)
i=0
echo "${array[i]}" # Look up the variable i
echo "${array[$i]}" # Substitute the value of i: look up the value 0
echo "${array[0]}" # Look up the value 0, just like above
但是,当您开始对变量而不是值执行操作时,情况会有所不同:
echo "${array[i++]}" # Increment variable i
echo "${array[$i++]}" # 0++: syntax error: operand expected
echo "${array[0++]}" # Makes no sense, just like above
因为您可以增加一个变量,但不能增加一个数字,i++可以,而0++不能,所以在用$计算变量之前,您不能用变量替换其内容
对于所有其他计算为算术表达式的语法,如$。。。您可以用i++替换您的,但不能用$i++
请注意,如果使用关联数组,索引将作为字符串而不是算术表达式计算,因此${array[i]}将查找字母i,而${array[$i]}将查找数字0 例如,在几个不同的地方,我看到了这句话: 在表达式中,shell变量也可以通过名称引用,而不使用参数扩展语法 在数组的方括号内,在算术表达式的上下文中解释事物。根据上面有点简洁的句子,这里不需要参数扩展语法,我认为它是指变量名前面的$-符号
如果包含$-符号,则正常参数扩展使其工作;如果你不把它放进去,那么这个与算术表达式相关的规则会使它起作用。最终的结果是他们都工作,你可以选择你的 你能澄清一下你的最后一段吗?你的两个例子看起来和我一模一样——也许我看错了什么?哦,对不起
echo "${array[i++]}" # Increment variable i
echo "${array[$i++]}" # 0++: syntax error: operand expected
echo "${array[0++]}" # Makes no sense, just like above