繁体   English   中英

shell脚本中未定义变量的值是什么

[英]What is the value of undefined variable on shell script

我正在从文件创建数组,但是我注意到,如果不初始化变量并使用它,那么它也可以正常工作。 就像我的代码是:

while read line
   do 
    array[i]="$line"
    i=$i+1
   done < file

在这里,我想知道“ i”的值如何用零初始化,即使我尚未初始化它的值。

首先让我告诉您,这没有达到您的期望。 bash中未初始化的变量将根据上下文求值。 0数字是预期的; 到期望字符串an empty string 在这种情况下...

i=$i+1

实际上是一个字符串连接。 无论如何,整个事情都是可行的,因为+1+1+1等不同。您的意思可能是这样的:

: $((++i))

或这个:

i=$((i + 1))

但是无论如何,使用未初始化的变量只是一个不好的做法。 它在单行代码中很有用,在这种情况下,编写i=0i=""是不必要的负担,但是在脚本中,我一开始会使用set -u捕获所有实例。

一些有用的来源: http : //mywiki.wooledge.org/ArithmeticExpression

i尚未初始化为零,但其参考值计算为零

如果变量为空(null)或未设置,则其引用的值为0。

在下一行i=$i+1 ,变量被其值(空)替换,导致i=+1 ,等于1。

因此,它大多数情况下是偶然发生的,但在这种情况下会导致预期的结果。

将来,我建议使用set -u以避免意外使用未初始化的变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM